題目描述
把一個數組最開始的若干個元素搬到數組的末尾危尿,我們稱之為數組的旋轉。輸入一個非遞減排序的數組的一個旋轉馁痴,輸出旋轉數組的最小元素谊娇。例如數組{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)
return 0;
int low = 0,high = array.length - 1;
while(low < high){
int mid = (low + high)/2;
if(array[mid] > array[high])
//向右查找
low = mid + 1;
else
//向左查找
high = mid;
}
return array[low];
}
}
主要思路
1船逮、考查二分查找的使用
2顾腊、向右查找的條件,應該是array[mid] > array[high]挖胃,而不是array[mid] > array[low]杂靶,以免出現3,3,3,1,2這種特例
3、嚴格來說這道題還要考慮3,3,3,1,3這種特例酱鸭,此時只能順序查找吗垮,可能因為不是考查重點,此時測試用例已全部通過