首页 > 编程语言 > 详细

LeetCode 153. 寻找旋转排序数组中的最小值

时间:2020-10-05 21:50:53      阅读:25      评论:0      收藏:0      [点我收藏+]

题目连接

153. 寻找旋转排序数组中的最小值

实现思路

因为数组被分成了两部分,我们每次拿到nums[mid]的值之后都应该和nums[right]进行比较

  1. 如果nums[mid] <= nums[right]的话,说明我们[mid, right]是有序的,那么我们nums[mid]有可能是最小值,所以right = mid
  2. 否则的话,说明我们[left, mid]是有序的,我们需要往右半部分进行查询,因为当前的值比右边最大值还大,我们可以抛弃mid,直接让left = mid + 1
    最后返回nums[right]即可。

代码实现

class Solution {
    public int findMin(int[] nums) {
        int left = 0;
        int right = nums.length - 1;
        while(left < right){
            int mid = left + ((right - left) >> 1);
            if(nums[mid] <= nums[right]){
                right = mid;
            }else{
                left = mid + 1;
            }
        }
        return nums[right];
    }
}

LeetCode 153. 寻找旋转排序数组中的最小值

原文:https://www.cnblogs.com/ZJPaang/p/13770479.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!