//分两部 先找最小 再找最大
class Solution {
public int[] searchRange(int[] nums, int target) {
if(nums == null || nums.length == 0) return new int[]{-1, -1};
int[] n = new int[] {-1, -1};
int s = 0;
int e = nums.length - 1;
int l = 0;
int r = nums.length - 1;
//找最小
while(s <= e) {
int m = s + (e - s) / 2;
if(target == nums[m]) { //如果找到== target 就把当前位置储存下来 继续做 binary seach
n[0] = m;
e = m - 1;
} else if(target < nums[m]) {
e = m - 1;
} else {
s = m + 1;
}
}
//找最大
while(l <= r) {
int m = l + (r - l) / 2;
if(target > nums[m]) {
l = m + 1;
} else if(target < nums[m]) {
r = m - 1;
} else { //如果找到== target 就把当前位置储存下来 继续做 binary seach
n[1] = m;
l = m + 1;
}
}
return n;
}
}
Find First and Last Position of Element in Sorted Array
最新推荐文章于 2021-01-02 00:58:20 发布