Find Minimum in Rotated Sorted Array
2015-04-02 10:33 笨笨的老兔子 阅读(133) 评论(0) 编辑 收藏 举报一个有序数组被切成两段之后进行了交换得到一个新数组,求新数组中最小的数字
(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).
思路:根据mid的大小就可以选择到底是head=mid还是tail=mid
class Solution {
public:
int findMin(vector<int> &num) {
int head = 0, tail = num.size() - 1;
while (head < tail)
{
int mid = head + (tail - head) / 2;
if (num[mid] > num[tail] )
head = mid+1;
else if (num[mid] < num[tail])
tail = mid;
else
{
tail--;
}
}
return num[head];
}
};