问题描述:
具体代码:
class Solution {
public int findMin(int[] nums) {
int lo=0, hi = nums.length-1;
while(lo<hi){
int mid=lo+(hi-lo)/2;
if(nums[mid]<nums[hi]){
hi=mid;
}else if(nums[mid]>nums[hi]){
lo=mid+1;
}else{
hi=hi-1;
}
}
return nums[lo];
}
}
总结分析:
今天依旧是二分法,这段代码很无敌。可以解决154和153两个题目。二者的区别是数组中有无重复元素,当然154难度更大的原因是有重复元素。
其中,几个边界条件需要认真体会一下。