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重拳出击)

LeetCode 34 在排序数组中查找元素的第一个和最后一个位置

Python描述 LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置