码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode:Search for a Range

时间:2014-12-29 12:14:25      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:algorithm   leetcode   

题目描述:

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


思路:采用二分查找,在给定的数组中查找给定的元素,在查找的过程中记录数组中给定元素下标的最大值与最小值。


代码:

void getRange(int A[],int start,int end,int target,int & left,int & right,bool &flag)
{
    if(start > end)
        return;
    int mid = (start+end)/2;
    if(A[mid] == target)
    {
        if(mid < left)
            left = mid;
        if(mid > right)
            right = mid;
        flag = true;
        getRange(A,start,mid-1,target,left,right,flag);
        getRange(A,mid+1,end,target,left,right,flag);
    }
    else if(A[mid] > target)
        getRange(A,start,mid-1,target,left,right,flag);
    else if(A[mid] < target)
        getRange(A,mid+1,end,target,left,right,flag);
}

vector<int> Solution::searchRange(int A[], int n, int target) {
        int left = n-1;
    int right = 0;
    vector<int> result;
    bool flag = false;
    getRange(A,0,n-1,target,left,right,flag);
    if(flag)
    {
        result.push_back(left);
        result.push_back(right);
    }
    else
    {
        result.push_back(-1);
        result.push_back(-1);
    }
    return result;
    }


LeetCode:Search for a Range

标签:algorithm   leetcode   

原文地址:http://blog.csdn.net/yao_wust/article/details/42235133

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!