leetcode Submission Details

来源:互联网 发布:windows phone 输入法 编辑:程序博客网 时间:2024/05/01 01:51

Given a sorted array of integers, find the starting and ending position of a given target value.

Your algorithm's runtime complexity must be in the order of O(log n).

If the target is not found in the array, return [-1, -1].

For example,
Given [5, 7, 7, 8, 8, 10] and target value 8,
return [3, 4].


二分法的应用

 vector<int> searchRange(vector<int>& nums, int target) {        int n=nums.size();        int left=0,right=n-1,mid;        vector<int> res;                while(left<=right)    //寻找左边界,即nums[mid]=target并且nums[mid-1]不等于target        {            mid=(left+right)/2;            if(nums[mid]<target)                left=mid+1;            else if(nums[mid]>target)                right=mid-1;            else             {                if(mid==0||nums[mid-1]!=target)                {                    res.push_back(mid);                    break;                }                else right=mid-1;            }        }                if(left>right)         {            res.push_back(-1);            res.push_back(-1);             return res;         }        left=0;right=n-1;        while(left<=right)//寻找右边界,即nums[mid]=target并且nums[mid+1]不等于target        {            mid=(left+right)/2;            if(nums[mid]<target)                left=mid+1;            else if(nums[mid]>target)                right=mid-1;            else             {                if(mid==n-1||nums[mid+1]!=target)                 {                     res.push_back(mid);                     break;                 }                 else left=mid+1;            }        }          return res;            }


0 0
原创粉丝点击