修复二分法 Rust 示例错误

This commit is contained in:
alain
2024-03-25 16:24:29 +08:00
parent 253bddcf37
commit 10af2bdde4

View File

@ -501,19 +501,19 @@ func search(nums: [Int], target: Int) -> Int {
### **Rust:**
(版本一)左闭右区间
(版本一)左闭右区间
```rust
use std::cmp::Ordering;
impl Solution {
pub fn search(nums: Vec<i32>, target: i32) -> i32 {
let (mut left, mut right) = (0, nums.len());
while left < right {
let (mut left, mut right) = (0_i32, nums.len() as i32 - 1);
while left <= right {
let mid = (right + left) / 2;
match nums[mid].cmp(&target) {
match nums[mid as usize].cmp(&target) {
Ordering::Less => left = mid + 1,
Ordering::Greater => right = mid,
Ordering::Equal => return mid as i32,
Ordering::Greater => right = mid - 1,
Ordering::Equal => return mid,
}
}
-1
@ -521,19 +521,19 @@ impl Solution {
}
```
//(版本二)左闭右区间
//(版本二)左闭右区间
```rust
use std::cmp::Ordering;
impl Solution {
pub fn search(nums: Vec<i32>, target: i32) -> i32 {
let (mut left, mut right) = (0, nums.len());
while left <= right {
let (mut left, mut right) = (0_i32, nums.len() as i32);
while left < right {
let mid = (right + left) / 2;
match nums[mid].cmp(&target) {
match nums[mid as usize].cmp(&target) {
Ordering::Less => left = mid + 1,
Ordering::Greater => right = mid - 1,
Ordering::Equal => return mid as i32,
Ordering::Greater => right = mid,
Ordering::Equal => return mid,
}
}
-1