LeetCode 34 在排序树组中查找元素的第一个和最后一个位置[二分法] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 34 在排序树组中查找元素的第一个和最后一个位置[二分法] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
既然要求时间为O(logn),又是有序序列,二分法最适合不过了,首先不断取中间值,一直等到目标值,或者找不到(通过一个find进行判断),然后分别向左向右找到边界即可,代码如下:
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
int left = 0, right = nums.size() - 1;
bool find = false;
while(left <= right) {
int mid = (left + right) / 2;
if(nums[mid] == target) {
find = true;
left = right = mid;
break;
}
if(nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
if(find == false) {
return {-1, -1};
} else {
while(left >= 0 && nums[left] == target) {
left --;
}
while(right < nums.size() && nums[right] == target) {
right ++;
}
return {left + 1, right - 1};
}
}
};
/*作者:heroding
链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/solution/cer-fen-fa-by-heroding-nje5/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。*/
以上是关于LeetCode 34 在排序树组中查找元素的第一个和最后一个位置[二分法] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置 | Python
5-003-(LeetCode- 34) 在排序数组中查找元素的第一个和最后一个位置
[leetcode] 34. 在排序数组中查找元素的第一个和最后一个位置(Java)
算法leetcode|34. 在排序数组中查找元素的第一个和最后一个位置(rust重拳出击)