mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-07 07:35:35 +08:00
Update 0034.在排序数组中查找元素的第一个和最后一个位置.md
This commit is contained in:
@ -329,6 +329,67 @@ class Solution {
|
||||
}
|
||||
```
|
||||
|
||||
### C#
|
||||
|
||||
```c#
|
||||
public int[] SearchRange(int[] nums, int target) {
|
||||
|
||||
var leftBorder = GetLeftBorder(nums, target);
|
||||
var rightBorder = GetRightBorder(nums, target);
|
||||
|
||||
if (leftBorder == -2 || rightBorder == -2) {
|
||||
return new int[] {-1, -1};
|
||||
}
|
||||
|
||||
if (rightBorder - leftBorder >=2) {
|
||||
return new int[] {leftBorder + 1, rightBorder - 1};
|
||||
}
|
||||
|
||||
return new int[] {-1, -1};
|
||||
|
||||
}
|
||||
|
||||
public int GetLeftBorder(int[] nums, int target){
|
||||
var left = 0;
|
||||
var right = nums.Length - 1;
|
||||
var leftBorder = -2;
|
||||
|
||||
while (left <= right) {
|
||||
var mid = (left + right) / 2;
|
||||
|
||||
if (target <= nums[mid]) {
|
||||
right = mid - 1;
|
||||
leftBorder = right;
|
||||
}
|
||||
else {
|
||||
left = mid + 1;
|
||||
}
|
||||
}
|
||||
|
||||
return leftBorder;
|
||||
}
|
||||
|
||||
public int GetRightBorder(int[] nums, int target){
|
||||
var left = 0;
|
||||
var right = nums.Length - 1;
|
||||
var rightBorder = -2;
|
||||
|
||||
while (left <= right) {
|
||||
var mid = (left + right) / 2;
|
||||
|
||||
if (target >= nums[mid]) {
|
||||
left = mid + 1;
|
||||
rightBorder = left;
|
||||
}
|
||||
else {
|
||||
right = mid - 1;
|
||||
}
|
||||
}
|
||||
|
||||
return rightBorder;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
### Python
|
||||
|
Reference in New Issue
Block a user