首页 > 其他 > 详细

LeetCode Find Minimum in Rotated Sorted Array II

时间:2015-07-27 19:08:27      阅读:232      评论:0      收藏:0      [点我收藏+]

Follow up for "Find Minimum in Rotated Sorted Array":
What if duplicates are allowed?

Would this affect the run-time complexity? How and why?

Suppose a sorted array is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

Find the minimum element.

The array may contain duplicates.

思路分析:这题类似于LeetCode Find Minimum in Rotated Sorted Array ,具体解析可以参考前一篇,这题的特殊之处是数组中可以有重复元素,那么当A[m]=A[l]时,执行l++即可。此时,就只可以排除掉一个元素,而不是一半元素,最坏情况下算法时间复杂度是O(n),不再是O(logN)。

AC Code:

public class Solution {
     public int findMin(int[] nums) {
        int n = nums.length;
        int l = 0;
        int r = n-1;
        int min = nums[0];
        while(l < r){
    	    int m = l + (r-l) / 2;
        	if(nums[m] < nums[l]) {
        		min = Math.min(nums[m], min);
        	    r = m;
            } else if(nums[m] > nums[l]){
            	min = Math.min(nums[l], min);
            	l = m;
            } else {
            	l++;
            }
        }
        min = Math.min(nums[l], min);
        min = Math.min(nums[r], min);
        return min;
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

LeetCode Find Minimum in Rotated Sorted Array II

原文:http://blog.csdn.net/yangliuy/article/details/47086789

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