/**
* 旋轉數組的最小數字(尋找右排序的首個元素x,x也可以稱爲旋轉點)
* @Description
*/
public class Test09 {
public int minArray(int[] numbers) {
// int i = 0, j = numbers.length - 1;
// while (i < j) {
// int m = (i + j) / 2;
// if (numbers[m] > numbers[j]) i = m + 1;
// else if (numbers[m] < numbers[j]) j = m;
// else j--;
// }
// return numbers[i];
//劍指offer思路,超出時間限制
if (numbers == null || numbers.length <= 0){
return -1;
}
int left = 0;
int right = numbers.length - 1;
int mid = left;//mid爲旋轉數組的旋轉點
while (numbers[left] >= numbers[right]){
if (right - left == 1) {
mid = right;
break;
}
mid = (left + right) / 2;
if (numbers[mid] >= numbers[left]){
left = mid;
}else if (numbers[mid] <= numbers[right]){
right = mid;
}
}
return numbers[mid];
}
public static void main(String[] args) {
int[] numbers = new int[]{3,4,5,6,7,8,1,2};
System.out.println(new Test09().minArray(numbers));
}
}
劍指Offer-08-旋轉數組的最小數字
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.