Suppose an array sorted in ascending order 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.
The array may contain duplicates.
Example 1:
Input: [1,3,5] Output: 1
Example 2:
Input: [2,2,2,0,1] Output: 0
题目在旋转过的排序数组中找最小值。
由于可以包含重复的值。遍历反倒是最优解(容易理解,且最差情况下速度最快)。代码如下:
int findMin(int* nums, int numsSize) {
int left = nums[0];
int* end = nums+numsSize ;
while(nums < end){
if(*nums < left){
return *nums;
}
++nums;
}
return left;
}