zoukankan      html  css  js  c++  java
  • [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;
         }
  • 相关阅读:
    Hadoop(1.2.1)安装
    ETL,BPM与ESB三者的一些感悟
    编程上面的理论支撑
    TreeSet类的排序
    List接口
    Map接口
    类和对象
    面向对象1
    IO流4
    Java面向对象
  • 原文地址:https://www.cnblogs.com/hellowooorld/p/6941477.html
Copyright © 2011-2022 走看看