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

Find Minimum in Rotated Sorted Array

时间:2014-12-13 09:38:26      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:array   分治法   

Catalogue: array-分治法搜索

Question

Suppose a sorted array is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

Find the minimum element.

You may assume no duplicate exists in the array.

First try

class Solution {
public:
    int findMin(vector<int> &num) {
        ret = 0;
        binarySearch(num,0,num.size()-1);
        return num[ret];
    }
    
    void binarySearch(vector<int> &num, int start, int end)
    {
        if(end-start<=1)
        {
            if(num[end]>num[start]) return;
            else
            {
                ret = end;
                return;
            }
        }
        
        int mid = (start + end) >> 1;
        if(num[start]>num[mid])
          binarySearch(num, start, mid);
        else if(num[mid+1]>num[end])
          binarySearch(num, mid+1, end);
        else if(num[mid]>num[mid+1])
          ret = mid+1;
    }
private:
    int ret;
};
Result: Accepted




Find Minimum in Rotated Sorted Array

标签:array   分治法   

原文地址:http://blog.csdn.net/joannae_hu/article/details/41905283

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