题目链接:https://leetcode.com/problems/find-minimum-in-rotated-sorted-array-ii/
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?
思路同上一题,二分。
AC 0ms 100% Java:
class Solution {
public int findMin(int[] nums) {
if(nums.length==1)
return nums[0];
int i=0,j=nums.length-1;
int min=nums[0];
while(i<j){
int mid=(i+j)/2;
int temp=Math.min(nums[i],Math.min(nums[j],nums[mid]));
min=Math.min(min,temp);
if(nums[mid]<nums[i]){
j=mid;
}else if(nums[mid]==nums[i]){
i++;
}else{
i=mid;
}
}
return min;
}
}