二分查找:數組
mid
mid
右邊mid
左邊nums[mid] > nums[mid + 1]
的時候 mid+1
是最小值 nums[mid-1] > nums[mid]
的時候 nums[mid]
是最小值nums[r]>nums[0]
也是第一個最小var findMin = function(nums) {
let l=0,r=nums.length-1;
if(nums.length==1) return nums[0]
if(nums[r]>nums[0]) return nums[0]
while(l<=r){
let mid=(l+r)>>1;
if(nums[mid] > nums[mid + 1]) return nums[mid+1]
if(nums[mid-1] > nums[mid]) return nums[mid]
if(nums[mid]>nums[0])
l=mid;
else
r=mid;
}
return -1;
};
複製代碼