[leetcode-34-Search for a Range]

Posted hellowOOOrld

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[leetcode-34-Search for a Range]相关的知识,希望对你有一定的参考价值。

Given an array of integers sorted in ascending order, 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 len = nums.size(),low=0,high = len-1,mid = low +(high-low)/2;
         vector<int>ret;
         while (low <= high)
         {
             mid = low + (high - low) / 2;
             if (nums[mid] == target)
             {
                 while (mid>=0 && nums[mid] == target)
                 {
                     mid--;
                 }
                 ret.push_back(mid + 1);
                 mid++;
                 while (mid<len && nums[mid] == target)
                 {
                     mid++;
                 }
                 ret.push_back(mid - 1);
                 break;
             }
             else if (nums[mid]<target)
             {
                 low = mid + 1;
             }
             else high = mid - 1;
         }
         if (ret.size()==0)
         {
             ret.push_back(-1), ret.push_back(-1);
         }
         return ret;
     }

 






以上是关于[leetcode-34-Search for a Range]的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode]34. Search for a Range

Leetcode--34--Search for a Range

[leetcode-34-Search for a Range]

LeetCode34: Search for a Range

[LeetCode] 34. Search for a Range

LeetCode 34. Search for a Range (找到一个范围)