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.
题目解析:这里用binary search,需要注意的是边界容易突跃
int findMin(int* nums, int numsSize) {
int l = 0;
int r = numsSize - 1;
if (nums[r] > nums[l]) return nums[0];
while(l <= r)
{
if (r - l <= 1) {
if (nums[r] < nums[l]) return nums[r];
else return nums[l];
}
int m = l + (r - l) / 2;
if (nums[m] > nums[l]) l = m; // not l = m + 1, in scase nums[m] is the minimum
if (nums[m] < nums[r]) r = m; // the same
}
return nums[0];// no use
}