leetcode 153. Find Minimum in Rotated Sorted Array

二分查找:數組

  1. 找到數組的中間元素 mid
  2. 若是中間元素 > 第一個元素,說明第一個元素到中間元素是升序的,最小值在 mid 右邊
  3. 若是中間元素 < 數組第一個元素,說明最小值在 mid 左邊
  4. nums[mid] > nums[mid + 1] 的時候 mid+1 是最小值 nums[mid-1] > nums[mid] 的時候 nums[mid] 是最小值
  5. 特殊狀況 長度爲1的時候第一個最小,有序數組的時候 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;
};
複製代碼
相關文章
相關標籤/搜索