1. 程式人生 > >二分查詢——旋轉陣列的最小數字

二分查詢——旋轉陣列的最小數字

題目描述

把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入一個遞增排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。
例如陣列{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該陣列的最小值為1。
NOTE:給出的所有元素都大於0,若陣列大小為0,請返回0。

import java.util.ArrayList;
public class Solution {
    public int minNumberInRotateArray(int [] array) {
         if(array == null||array.length == 0)
             return 0;
        int left=0;
        int right=array.length-1;
        if(array[left] == array[right])
            {
            for(int i=1;i<array.length;i++)
                {
                if(array[i] < array[i-1])
                    return array[i];
            }
            return array[left];
        }
        if(array[left] < array[right])
            return array[left];
        //general
        while(left < right-1)
            {
            int mid=left+(right-left)/2;
            if(array[mid] >= array[left])
                left=mid;
            else
                right=mid;
        }
        return array[right];
    }
}