Problem Description:
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: 1Example 2:
Input: [2,2,2,0,1] Output: 0Note:
- This is a follow up problem to Find Minimum in Rotated Sorted Array.
- Would allow duplicates affect the run-time complexity? How and why?
Analysis:
本题利用旋转的特性,逆向遍历整个序列,找到第一个元素大于其后的元素,其就是最小的元素。代码如下:
Code:
class Solution {
public int findMin(int[] nums) {
for(int i = nums.length - 2; i >= 0; i--) {
if(nums[i] > nums[i + 1]) {
return nums[i + 1];
}
}
return nums[0];
}
}