153
要找最小值,就与最大值比较
要找最小的,就向left取mid,向下取。
因为要找最小的,所以出现nums[mid]< 的情况时,移动要取到mid
class Solution {
public int findMin(int[] nums) {
int left = 0, right = nums.length - 1;
while(left < right){
int mid = (left + right) >>> 1;
if(nums[mid] > nums[right]){
left = mid + 1;
}else if(nums[mid] < nums[right]){
right = mid;
}
}
return nums[left];
}
}
154.数组中有重复
跟right比较,出现重复,让right–;同之前那道题81
class Solution {
public int findMin(int[] nums) {
int left = 0, right = nums.length - 1;
while(left < right){
int mid = (left + right) >>> 1;
if(nums[mid] > nums[right]){
left = mid + 1;
}else if(nums[mid] < nums[right]){
right = mid;
}else{
right--;
}
}
return nums[left];
}
}