34. 在排序数组中查找元素的第一个和最后一个位置
题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目描述
题目分析
排好序的记得用二分!!!!
1.找左侧边界
2.找右侧边界
用ans存储边界值。
class Solution {
public:
int binarySearch(vector<int>& nums, int target, int flag){
int left = 0;
int right = nums.size() - 1;
int ans = -1;
while(left <= right){
int middle = left + (right - left) / 2;
if(target > nums[middle]){
left = middle + 1;
}else if(target < nums[middle]){
right = middle - 1;
}else{
ans = middle;
if(flag){//找左边界
right = middle - 1;
}else{//找有边界
left = middle + 1;
}
}
}
return ans;
}
vector<int> searchRange(vector<int>& nums, int target) {
int left = binarySearch(nums, target, true);//第三个参数true找左边界
int right = binarySearch(nums, target, false);//第三个参数false找右边界
return vector<int>{left, right};
}
};