思路:
二分法找到nums中得target,然后左右扩展,返回坐标。
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
vector<int> res = {-1, -1};
int i = 0, j = nums.size() - 1;
while(i <= j) {
int mid = (i + j)/2;
if(nums[mid] == target) {
int left = mid - 1;
int right = mid + 1;
while(left >= 0 && nums[left] == target) left--;
while(right <= j && nums[right] == target) right++;
res[0] = left + 1;
res[1] = right - 1;
return res;
}else if(nums[mid] < target) {
i = mid + 1;
}else {
j = mid - 1;
}
}
return res;
}
};
使用二分查找优化搜索区间
445

被折叠的 条评论
为什么被折叠?



