题目:
难度:Hard
相关话题:数组
、二分查找
假设按照升序排序的数组在预先未知的某个点上进行了旋转。
( 例如,数组 [0,1,2,4,5,6,7]
** 可能变为 [4,5,6,7,0,1,2]
)。
请找出其中最小的元素。
注意数组中可能存在重复的元素。
示例 1:
示例2:
说明:
/**
* @来源: Javascript中文网 - 前端进阶资源教程 https://www.javascriptc.com/
* @介绍:一个致力于帮助开发者用代码改变世界为使命的平台,每天都可以在这里找到技术世界的头条内容
* @param {number[]} nums
* @return {number}
*/
var findMin = function(nums) {
let lo = 0;
let hi = nums.length - 1;
let mid = 0;
while(lo < hi) {
mid = lo + Math.floor((hi - lo) / 2);
if (nums[mid] > nums[hi]) {
lo = mid + 1;
}else if (nums[mid] < nums[hi]) {
hi = mid;
}else {
hi--;
}
}
return nums[lo];
};