/*
* @lc app=leetcode.cn id=153 lang=javascript
*
* [153] 寻找旋转排序数组中的最小值
*/
// @lc code=start
/**
* @param {number[]} nums
* @return {number}
*/
var findMin = function (nums) {
if (nums.length === 1) return nums[0]
// 定义两个执政的下标
let left = 0,
right = nums.length - 1
// 如果最后一个大于第一个,说明数组没有被反转
if (nums[right] > nums[0]) return nums[0]
while (left <right) {
let mid = Math.floor(left + (right - left) / 2)
// 如果刚好在中间就返回最小值
if (nums[mid] > nums[mid + 1]) {
return nums[mid + 1]
} else if (nums[mid] < nums[mid - 1]) {
return nums[mid]
}
// 没有就继续二分,判断最小值是在那一边
if(nums[mid]>nums[left]){
left=mid+1
}else{
right=mid-1
}
}
}
// @lc code=end