zoukankan      html  css  js  c++  java
  • lintcode160- Find Minimum in Rotated Sorted Array II- medium

    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.

     Notice

    The array may contain duplicates.

    Example

    Given [4,4,5,6,7,0,1,2] return 0.

    和I类似,OOXX二分法(find the first X),只是对比对象变掉。从原来的最后一个数,变为最后开始数起第一个比不等于nums[0]的数。

    public class Solution {
        /*
         * @param nums: a rotated sorted array
         * @return: the minimum number in the array
         */
        public int findMin(int[] nums) {
    
            //返回int这里怎么处理?
            if (nums == null || nums.length == 0){
                throw new IllegalArgumentException();
            }
    
            int start = 0;
            int end = nums.length - 1;
    
            while (end > 0 && nums[end] == nums[start]){
                end--;
            }
    
            int cmpTarget = nums[end];
    
            while (start + 1 < end){
                int mid = start + (end - start) / 2;
                if (nums[mid] > cmpTarget){
                    start = mid;
                } else {
                    end = mid;
                }
            }
    
            return Math.min(nums[start], nums[end]);
        }
    }
  • 相关阅读:
    正则
    cookie、sesion
    POJ-1509
    HDU-3374
    ZOJ-3822
    HDU-5492
    在什么情况下Java比C++快?
    HDU-5451
    SPOJ-913
    莫比乌斯反演入门
  • 原文地址:https://www.cnblogs.com/jasminemzy/p/7580078.html
Copyright © 2011-2022 走看看