您的位置:首页 > Web前端 > JavaScript

leetcode(js)-每日一练之 寻找旋转排序数组中的最小值 题库编号153

2020-06-04 06:44 405 查看

leetcode(js)-每日一练之 寻找旋转排序数组中的最小值


主要思路:

  1. 主要运用二分法
  2. 如果数组长度为1,返回唯一的一个数
  3. 定义两个指针,第一个left指向数组开头,第二个right指向数组结尾
  4. 检查数组是否被翻转,如果没有,则返回数组里的第一个数
  5. 当left小于right时,取中间值作为mid进行二分搜索,如果mid的左边一个数大于mid,则返回mid,或者mid的右边一个数小于mid,则返回mid+1
  6. 否则的话,如果left所在的数小于mid,则将left右移至mid+1位置(砍掉左半边)
  7. 否则的话,将right左移至mid-1位置(砍掉右半边)
var findMin = function(nums) {
if(nums.length===1)
{
return nums[0];
}
let left = 0;
let right = nums.length-1;
if(nums[left]<nums[right])
{
return nums[0];
}
while(left<right)
{
let mid = Math.floor(left+(right-left)/2);//注意中间值的找法
if(nums[mid]<nums[mid-1])
{
return nums[mid];
}
if(nums[mid]>nums[mid+1])
{
return nums[mid+1]
}
if(nums[mid]>nums[left])
{
left=mid+1;
}else{
right=mid-1;
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐