Saturday, September 2, 2017

[LeetCode]Find Minimum in Rotated Sorted Array II

Find Minimum in Rotated Sorted Array类似,区别就是允许重复。那么重复能带来的问题就是,以前我们是根据nums[mid]和nums[hi]的大下来判断右半段是否sorted,但是如果相等的话,我们其实是无法判断的。比如:

  • 2,1,2,2,2
  • 2,2,2,1,2
  • 2,2,2,2,2
这三种情况左边sorted或者右边sorted或者整个数组就是sorted的情况我们无法分辨,所以对于相等的情况我们必须特殊处理。如果是用的递归写的二分,我们判断到相等的时候需要左右两边都去递归,取左右两边最小值。如果是循环的话我们就排除hi的数,时间复杂度最坏的情况下可以退化到O(n)。代码如下:


No comments:

Post a Comment