Leetcode 34 Find First and Last Position of Element in Sorted Array
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
vector<int> res(2,-1);
if(nums.empty())
return res;
res[0] = findFirst(nums,target);
res[1] = findLast(nums,target);
return res;
}
int findFirst(vector<int>& nums, int target) {
int pos = 0;
int left = 0;
int right = nums.size() -1;
while(left <= right){
int mid = (left + right) /2;
if(nums[mid] >= target){
right = mid - 1;
}else if(nums[mid] < target){
left = mid + 1;
}
}
if(left < nums.size() && nums[left] == target)
return left;
else
return -1;
}
int findLast(vector<int>& nums, int target) {
int pos = 0;
int left = 0;
int right = nums.size() -1;
while(left <= right){
int mid = (left + right) /2;
if(nums[mid] > target){
right = mid - 1;
}else if(nums[mid] <= target){
left = mid + 1;
}
}
if(right < nums.size() && nums[right] == target)
return right;
else
return -1;
}
};