首页 > 编程语言 > 详细

Leetcode之二分法专题-154. 寻找旋转排序数组中的最小值 II(Find Minimum in Rotated Sorted Array II)

时间:2019-08-26 08:30:37      阅读:160      评论:0      收藏:0      [点我收藏+]

Leetcode之二分法专题-154. 寻找旋转排序数组中的最小值 II(Find Minimum in Rotated Sorted Array II)


 

假设按照升序排序的数组在预先未知的某个点上进行了旋转。

( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

请找出其中最小的元素。

注意数组中可能存在重复的元素。

示例 1:

输入: [1,3,5]
输出: 1

示例 2:

输入: [2,2,2,0,1]
输出: 0


153题很像,只不过这题会有重复的数字,这种情况用153的代码会报错:3 3 1 3
这个样例是从1和3的节点中间旋转的,那我们只需要在153的代码上作出如下改动即可:
如果nums[mid]==nums[R] 就R--,因为他们两个一样,所以右边的那个直接省略掉。

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

 



Leetcode之二分法专题-154. 寻找旋转排序数组中的最小值 II(Find Minimum in Rotated Sorted Array II)

原文:https://www.cnblogs.com/qinyuguan/p/11410179.html

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