Search for a Range 查找范围

原创 2018年04月17日 10:37:26

题目描述

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

题目已经给出时间复杂度为O(log n),所以采用二分法。

实现代码:

             class Solution {
public:
    vector<int> searchRange(int A[], int n, int target) {
        vector<int> ret;
        ret.push_back(-1);
        ret.push_back(-1);
        int left=0,right=n-1,mid;
        while(left<=right)
        {
            if(A[left]==target && A[right]==target)
            {
                ret[0]=left;
                ret[1]=right;
                break;
            }
            mid=(left+right)/2;
            if(A[mid]<target)
            {
                left=mid+1;
            }
            else 
                if(A[mid]>target)
            {
                right=mid-1;
            }
                else //有可能中间位置正好等于目标值;
            {
                if(A[right]==target) //此时只能判断右端是否等于目标值,
                    ++left; //满足条件,左端向右移动;
                else
                    --right; //满足条件,右端向左靠;
            }
        }
    return ret;
    }
};

数据结构基础系列(8):查找

-
  • 1970年01月01日 08:00

LeetCode解题报告--Search for a Range

题目: Given a sorted array of integers, find the starting and ending position of a given target valu...
  • github_27609763
  • github_27609763
  • 2015-12-04 13:32:03
  • 1761

Leetcode #34. Search for a Range 范围搜寻 解题报告

1 解题思想题目给了一个允许重复的,已排序的数组,和一个目标值,让你把这个值所出现的位置都找出来,难度在于,要求时间复杂度为O(log n).既然时间复杂度要求O(log n),那么肯定是要用一些技巧...
  • MebiuW
  • MebiuW
  • 2016-04-06 10:35:34
  • 364

Search for a Range -- LeetCode

原题链接: http://oj.leetcode.com/problems/search-for-a-range/  这道题是二分查找Search Insert Position的变体,思路并不复杂...
  • linhuanmars
  • linhuanmars
  • 2014-03-06 03:48:49
  • 17550

LeetCode 34 — Search for a Range(C++ Java Python)

题目: 题目翻译: 分析: C++实现: Java实现: Python实现: 感谢阅读,欢迎评论!...
  • dragon_dream
  • dragon_dream
  • 2014-04-03 20:53:45
  • 3536

Tsinghua OJ:范围查询(Range)

范围查询(Range) Descriptioin Let S be a set of n integral points on the x-axis. For each given inte...
  • itismelzp
  • itismelzp
  • 2015-10-18 20:15:06
  • 1596

leetcode 34 -- Search for a Range

Search for a Range 题目: Given a sorted array of integers, find the starting and ending position...
  • wwh578867817
  • wwh578867817
  • 2015-06-23 00:36:45
  • 1230

leetcode_c++:Search for a Range(034)

题目Given a sorted array of integers, find the starting and ending position of a given target value.Yo...
  • mijian1207mijian
  • mijian1207mijian
  • 2016-05-18 00:45:22
  • 244

LeetCode 34 Search for a Range (C,C++,Java,Python)

Problem: Given a sorted array of integers, find the starting and ending position of a given tar...
  • runningtortoises
  • runningtortoises
  • 2015-05-14 21:28:11
  • 1230

Search for a Range 查找一个数所在的范围

class Solution { public:     vector searchRange(int A[], int n, int target) {         vector ret(...
  • tangyifei1991
  • tangyifei1991
  • 2014-01-20 17:03:15
  • 260
收藏助手
不良信息举报
您举报文章:Search for a Range 查找范围
举报原因:
原因补充:

(最多只允许输入30个字)