題目
把一個數(shù)組最開始的若干個元素搬到數(shù)組的末尾,我們稱之為數(shù)組的旋轉(zhuǎn)。輸入一個遞增排序的數(shù)組的一個旋轉(zhuǎn),輸出旋轉(zhuǎn)數(shù)組的最小元素。例如,數(shù)組 [3,4,5,1,2] 為 [1,2,3,4,5] 的一個旋轉(zhuǎn),該數(shù)組的最小值為1。
示例 1:
輸入:[3,4,5,1,2]
輸出:1
示例 2:
輸入:[2,2,2,0,1]
輸出:0
題目解析
旋轉(zhuǎn)數(shù)組指的是將數(shù)組最小的 N 位移動到數(shù)組尾部,數(shù)組又是遞增的,所以當(dāng) i < i - 1 時,那么 nums[i] 就是最小值。
第一次
老規(guī)矩暴力解答,注意末尾出口,因?yàn)閿?shù)組可能未旋轉(zhuǎn)。魯迅說暴力不能解決問題,最終 offer 會到別人手里。
class Solution {
public int minArray(int[] numbers) {
if (numbers == null || numbers.length == 0) return 0;
for (int i = 1; i < numbers.length; i++) {
if (numbers[i] < numbers[0]) {
return numbers[i];
}
}
return numbers[0];
}
}
第二次
二分才是本題真正考察的點(diǎn),魯迅也說過 上菜了
``