二分查詢——旋轉陣列的最小數字
阿新 • • 發佈:2019-01-06
題目描述
把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入一個遞增排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。例如陣列{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]; } }