changgyhub / leetcode_101

LeetCode 101:和你一起你轻松刷题(C++)
8.2k stars 1.12k forks source link

4.3 查找区间解法不稳定 34. Find First and Last Position of Element in Sorted Array (Medium) #61

Closed JiaqiongLi closed 2 days ago

JiaqiongLi commented 2 years ago

class Solution { public: vector searchRange(vector& nums, int target) {

    if(nums.empty()) return vector<int>{-1,-1};
    int lower = lower_bound(nums, target);
    int upper = upper_bound(nums, target)-1;

    //if(nums[lower] != target || lower==nums.size()) return vector<int>{-1,-1}; 
    // there is a trap in this place if we use left open right closed interval
    // As lower pointer is possible to be out of the nums vector, nums[lower] may return errors

    if (lower == nums.size() || nums[lower] != target) return vector<int>{-1, -1};
    return vector<int>{lower, upper};

}
changgyhub commented 2 years ago

Sorry I don't understand your question - since in the code we are checking lower == nums.size() before nums[lower] != target, it should be impossible to query out of bound indices?