美文网首页
Java日记2018-08-10

Java日记2018-08-10

作者: hayes0420 | 来源:发表于2018-08-10 07:32 被阅读0次

find minimum in rotated sorted array II
旋转数组找到最小值,其中数组有重复值

使用二分法,最右的值小于中间值,那么最小值在右边。left就应该mid+1的地方,否则最小的值在左边,right=mid
当有重复值,即相等的时候,直接left加1呗,或者right--


public static int findmin1(int[] arr){
        int left =0;
        int right = arr.length-1;
        
        while(left<right){
            int mid = (left+right)/2;
            System.out.println(mid);
            if(arr[right]<arr[mid]){
                left=mid+1;
            } else if(arr[right]>arr[mid]) {
                right=mid;
            } else{
                right--;
            }
        }
        System.out.println(arr[left]);
        return arr[left];
    }
    public static void main(String[] args){
        int[] arr={3,3,4,4,-1,1};
        findmin1(arr);
    }


相关文章

网友评论

      本文标题:Java日记2018-08-10

      本文链接:https://www.haomeiwen.com/subject/wcghbftx.html