讨论/题目交流/34. 在排序数组中查找元素的第一个和最后一个位置/
34. 在排序数组中查找元素的第一个和最后一个位置

有没有兄弟帮我看看是哪里错了

class Solution {
public:
    vector<int> searchRange(vector<int>& nums, int target) {
        int n = nums.size();
        vector<int> res(2, -1);
        if(n == 0) return res;
        int l = 0, r = n - 1;
        while(l <= r){
            int m = l + (r - l) / 2;
            if(nums[m] == target){
                int i = m, j = m;
                while(nums[i] == target && i >= l) --i;
                while(nums[j] == target && j <= r) ++j;
                res[0] = i + 1;
                res[1] = j - 1;
                break;
            }else if(nums[m] > target){
                r = m - 1;
            }else{
                l = m + 1;
            }
        }
        return res;
    }
};

批注 2020-05-07 113519.png

展开讨论
rucideyi发起于 2020-05-07

越界了,看起来像while循环那里,与的顺序不对

1
展开全部 3 讨论