LeetCode(153)Find Minimum in Rotated Sorted Array

来源:互联网 发布:域名icp备案 编辑:程序博客网 时间:2024/04/27 20:04

题目如下:

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.


分析如下:

是对二分查找的变形,其中关于mid到底保留还是舍去,还是挺巧妙的。详见注释


我的代码:

//12msclass Solution {public:    int findMin(vector<int> &num) {        int start = 0;        int end = num.size() - 1;        int mid = 0;        while (start < end) { //注意这里和普通的二分查找不同,这里是start < end不是 start <= end.                mid = start + (end - start)/2;                if (num[mid] > num[end])                    start = mid + 1; //此时可以扔掉mid的值                else                     end = mid;//此时不能扔掉mid的值        }        return num[end]; //退出循环说明start与end相等,所以只剩一个元素可能,所以return [start]或者return [end]都可以了。        //注意不能return mid,可以从{2,1}这个输入看出来。            }};



0 0