美文网首页LeetCode算法
34. 在排序数组中查找元素的第一个和最后一个位置

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

作者: cptn3m0 | 来源:发表于2019-04-01 22:25 被阅读0次

    link

    https://www.cnblogs.com/randyniu/p/9350927.html

    这里的代码非常简洁, 难得的好代码.

    class Solution {
    public:
        int left_bound(vector<int>& nums, int target)
        {
            int beg =  0;
            int end = nums.size()-1;
            int mid = 0;
            while(beg <= end)
            {
                mid = beg + (end-beg)/2;
                if(target == nums[mid])
                {
                    // 二分查找的关键
                    if(mid == 0 || nums[mid-1] < target)
                        return mid;
                    end = mid -1;
                }
                else if(target < nums[mid])
                {
                    end = mid-1;
                }
                else if(target > nums[mid])
                {
                    beg  = mid+1;
                }
            }
            return -1;
        }
        
        int right_bound(vector<int>& nums, int target)
        {
            int beg =  0;
            int end = nums.size()-1;
            int mid = 0;
            while(beg <= end)
            {
                mid = beg + (end-beg)/2;
                if(target == nums[mid])
                {
                    if(mid == nums.size()-1 || nums[mid+1] > target)
                        return mid;
                    beg = mid + 1;
                }
                else if(target < nums[mid])
                {
                    end = mid-1;
                }
                else if(target > nums[mid])
                {
                    beg  = mid+1;
                }
            }
            return -1;
        }
        
        vector<int> searchRange(vector<int>& nums, int target) {
            int left = left_bound(nums, target);
            
            int right = right_bound(nums, target);
    
            
            return vector<int>{left, right}; 
        }
    };
    

    相关文章

      网友评论

        本文标题:34. 在排序数组中查找元素的第一个和最后一个位置

        本文链接:https://www.haomeiwen.com/subject/gkcibqtx.html