Merge pull request #1650 from Jack-Zhang-1314/patch-2

Update 0034.在排序数组中查找元素的第一个和最后一个位置.md
This commit is contained in:
程序员Carl
2022-09-24 15:47:43 +08:00
committed by GitHub

View File

@ -389,6 +389,57 @@ class Solution:
return [leftBorder, rightBorder]
```
### Rust
```rust
impl Solution {
pub fn search_range(nums: Vec<i32>, target: i32) -> Vec<i32> {
let right_border = Solution::get_right_border(&nums, target);
let left_border = Solution::get_left_border(&nums, target);
if right_border == -2 || left_border == -2 {
return vec![-1, -1];
}
if right_border - left_border > 0 {
return vec![left_border, right_border - 1];
}
vec![-1, -1]
}
pub fn get_right_border(nums: &Vec<i32>, target: i32) -> i32 {
let mut left = 0;
let mut right = nums.len();
let mut right_border: i32 = -2;
while left < right {
let mid = (left + right) / 2;
if nums[mid] > target {
right = mid;
} else {
left = mid + 1;
right_border = left as i32;
}
}
right_border as i32
}
pub fn get_left_border(nums: &Vec<i32>, target: i32) -> i32 {
let mut left = 0;
let mut right = nums.len();
let mut left_border: i32 = -2;
while left < right {
let mid = (left + right) / 2;
if nums[mid] >= target {
right = mid;
left_border = right as i32;
} else {
left = mid + 1;
}
}
left_border as i32
}
}
```
### Go
```go