mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 08:50:15 +08:00
Merge pull request #1650 from Jack-Zhang-1314/patch-2
Update 0034.在排序数组中查找元素的第一个和最后一个位置.md
This commit is contained in:
@ -389,6 +389,57 @@ class Solution:
|
|||||||
return [leftBorder, rightBorder]
|
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
|
||||||
|
|
||||||
```go
|
```go
|
||||||
|
Reference in New Issue
Block a user