LeetCode34. 在排序数组中查找元素的第一个和最后一个位置(C++)
题目链接
https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/
代码
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
int leftb = getLeft(nums, target);
int rightb = getRight(nums, target);
if(leftb == -2 || rightb == -2) return {-1, -1};
if(rightb - leftb > 1) return {leftb + 1, rightb - 1};
return {-1, -1};
}
private:
int getRight(vector<int>& nums, int target){
int left = 0;
int right = nums.size() - 1;
int Rightb = -2;
while(right >= left){
int middle = left + (right - left) / 2;
if(nums[middle] > target){
right = middle - 1;
}
else{
left = middle + 1;
Rightb = left;
}
}
return Rightb;
}
int getLeft(vector<int>& nums, int target){
int left = 0;
int right = nums.size() - 1;
int Leftb = -2;
while(right >= left){
int middle = left + (right - left) / 2;
if(nums[middle] >= target){
right = middle - 1;
Leftb = right;
}
else{
left = middle + 1;
}
}
return Leftb;
}
};
原文地址:https://blog.csdn.net/qq_44953660/article/details/136307495
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!