zoukankan      html  css  js  c++  java
  • leecode第三十四题(在排序数组中查找元素的第一个和最后一个位置)

    class Solution {
    public:
        void core_code(const vector<int>& nums, const int target, const int length, int start,int end,int& result_x,int& result_y)
        {
            if(start==end)//对于搜索到一个数,做如下判定
            {
                if((start==0&&nums[start]==target)||(start!=0&&nums[start-1]<target&&nums[start]==target))
                    result_x=start;
                if((end==length&&nums[end]==target)||(end!=length&&nums[end+1]<target&&nums[start]==target))
                    result_y=end;
                return;
            }
            
            int len=end-start;
            int mid=(len)/2+start;
            if(nums[mid]<target)
                core_code(nums,target,length,mid+1,end,result_x,result_y);
            else if(nums[mid]>target)
                core_code(nums,target,length,start,mid,result_x,result_y);
            else
            {
                if(nums[mid+1]==target)//因为二分搜索,右侧开头一定mid+1,所以这里多一个判断
                    core_code(nums,target,length,mid+1,end,result_x,result_y);
                else
                    result_y=mid;
                core_code(nums,target,length,start,mid,result_x,result_y);
            }
        }
        
        vector<int> searchRange(vector<int>& nums, int target) {
            vector<int> result(2,-1);
            int len=nums.size();
            if(len==0)//惭愧,忘记判断边界了
                return result;
    
            core_code(nums,target,len-1,0,len-1,result[0],result[1]);
            return result;
        }
    };

    分析:好惭愧,这题做的我尴尬症犯了。

  • 相关阅读:
    fork()
    定时器
    epoll函数
    select函数
    高性能服务器程序框架
    socker地址API
    点击选中/取消选中flag
    html5的视频和音频
    html5
    JavaScript的string方法(demo)
  • 原文地址:https://www.cnblogs.com/CJT-blog/p/11186971.html
Copyright © 2011-2022 走看看