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: 1
Example 2:
Input: [2,2,2,0,1]
Output: 0
Note:
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];
}
}