- 题目描述
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的
开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-1, -1]。
- 题解
二分查找
- 代码
class Solution {
public:
int find(vector<int>& nums, int target,int n){
int l=0,h=n;
while (l<h){
int m=(l+h)/2;
if (nums[m]<target) l=m+1;
else h=m;
}
return l;
}
vector<int> searchRange(vector<int>& nums, int target) {
int n=nums.size();
if (!n) return {-1,-1};
int l=find(nums,target,n);
int h=find(nums,target+1,n);
if (l==n||nums[l]!=target) return {-1,-1};
return {l,h-1};
}
};