• LeetCode OJ:Search for a Range(区间查找)


    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].

    查找一个区间开头以及结尾的下标,分两次二分查找,一次向左一次向右即可,代码如下:

     1 class Solution {
     2 public:
     3     vector<int> searchRange(vector<int>& nums, int target) {
     4         int sz = nums.size();
     5         int left = bs(nums, 0, sz, target, true);
     6         int right = bs(nums, 0, sz, target, false);
     7         vector<int> res;
     8         res.push_back(left);
     9         res.push_back(right);
    10         return res;
    11     }
    12 
    13     int bs(vector<int>& nums, int beg, int end, int target, int goLeft)
    14     {
    15         if(beg > end)
    16             return -1;
    17         int mid = (beg + end)/2;
    18         if(nums[mid] == target){
    19             int tmpAns = (goLeft == true ? bs(nums, beg, mid - 1, target, goLeft) : bs(nums, mid + 1, end, target, goLeft));
    20             return tmpAns == -1 ? mid : tmpAns;
    21         }else if(nums[mid] < target){
    22             return bs(nums, mid + 1, end, target, goLeft);
    23         }else{
    24             return bs(nums, beg, mid - 1, target, goLeft);
    25         }
    26     }
    27 };
  • 相关阅读:
    ExtJs中动态加载机制研究(转)
    ExtJs4 学习3 combox自动加载的例子
    Extjs 4学习2
    ExtJS 4学习
    javascript学习(知识点整理)
    ExtJS智能提示工具spket安装与破解
    eclipse慢 优化(转)
    疯狂学习java web5(SSI框架)
    疯狂学习java web4(jsp)
    疯狂学习java web3(javaScript)
  • 原文地址:https://www.cnblogs.com/-wang-cheng/p/4921581.html
Copyright © 2020-2023  润新知