BiruLyu
8/4/2017 - 6:25 PM

## 154. Find Minimum in Rotated Sorted Array II(#).java

``````class Solution(object):
def findMin(self, nums):
"""
:type nums: List[int]
:rtype: int
"""

if not nums :
return - 1;
l, r = 0, len(nums) - 1
while l < r :
mid = l + (r - l) / 2
if nums[mid] > nums[r] :
l = mid + 1
elif nums[mid] < nums[r] :
r = mid
else :
r -= 1
return nums[l]``````
``````public class Solution {
public int findMin(int[] nums) {
int l = 0, r = nums.length - 1;
while (l < r) {
int m = (l + r) >> 1;
if (nums[m] > nums[r]) l = m + 1;
else if (nums[m] < nums[r]) r = m;
else r--;
}
return nums[l];
}
}``````
``````public class Solution {
public int findMin(int[] nums) {
if (nums == null || nums.length < 1) return -1;
int i = 0;
int j = nums.length - 1;

while (i < j) {
if (nums[i] < nums[j]) return nums[i];
int mid = i + (j - i) / 2;
if (nums[mid] > nums[j]) {
i = mid + 1;
} else if (nums[mid] == nums[j] && nums[mid] == nums[i]) {
j--;
i++;
} else {
j = mid;
}
}
return nums[j];
}
}``````