From 4134c34c52d8ae16c9c60cd9778e1f98c6ed5a0b Mon Sep 17 00:00:00 2001 From: fwqaaq Date: Wed, 8 Nov 2023 21:07:35 +0800 Subject: [PATCH] =?UTF-8?q?Update=200704.=E4=BA=8C=E5=88=86=E6=9F=A5?= =?UTF-8?q?=E6=89=BE.md=20about=20Rust?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0704.二分查找.md | 42 ++++++++++++++++------------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/problems/0704.二分查找.md b/problems/0704.二分查找.md index ba5e538c..46f529db 100644 --- a/problems/0704.二分查找.md +++ b/problems/0704.二分查找.md @@ -481,41 +481,37 @@ func search(nums: [Int], target: Int) -> Int { ### **Rust:** -```rust -# (版本一)左闭右闭区间 +(版本一)左闭右开区间 +```rust impl Solution { pub fn search(nums: Vec, target: i32) -> i32 { - let mut left:usize = 0; - let mut right:usize = nums.len() - 1; - while left as i32 <= right as i32{ - let mid = (left + right) / 2; - if nums[mid] < target { - left = mid + 1; - } else if nums[mid] > target { - right = mid - 1; - } else { - return mid as i32; + let (mut left, mut right) = (0, nums.len()); + while left < right { + let mid = (right + left) / 2; + match nums[mid].cmp(&target) { + Ordering::Less => left = mid + 1, + Ordering::Greater => right = mid, + Ordering::Equal => return mid as i32, } } -1 } } +``` -# (版本二)左闭右开区间 +//(版本二)左闭右闭区间 +```rust impl Solution { pub fn search(nums: Vec, target: i32) -> i32 { - let mut left:usize = 0; - let mut right:usize = nums.len(); - while left < right { - let mid = (left + right) / 2; - if nums[mid] < target { - left = mid + 1; - } else if nums[mid] > target { - right = mid; - } else { - return mid as i32; + let (mut left, mut right) = (0, nums.len()); + while left <= right { + let mid = (right + left) / 2; + match nums[mid].cmp(&target) { + Ordering::Less => left = mid + 1, + Ordering::Greater => right = mid - 1, + Ordering::Equal => return mid as i32, } } -1