Merge pull request #2331 from fwqaaq/patch-1

Update 0704.二分查找.md about Rust
This commit is contained in:
程序员Carl
2023-11-09 10:11:56 +08:00
committed by GitHub

View File

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