題意描述:
把一個數組最開始的若干個元素搬到數組的末尾,我們稱之爲數組的旋轉。輸入一個遞增排序的數組的一個旋轉,輸出旋轉數組的最小元素。例如,數組 [3,4,5,1,2] 爲 [1,2,3,4,5] 的一個旋轉,該數組的最小值爲1。
示例:
示例一:
輸入:[3,4,5,1,2]
輸出:1
示例二:
輸入:[2,2,2,0,1]
輸出:0
解題思路:
Alice: 面試的時候還有這麼簡單的題目嗎 ?
Bob: 是啊,簡直就是送分題,直接找第一個下降的點就是答案啊。
Alice: 對,在處理一下沒有旋轉的那種,一直增長的情況就好了,直接設置初始值是數組第一個元素就好了。
Bob: 😎😎
代碼:
Python 方法一: 遍歷, 找到第一個下降的點就是答案。
class Solution:
def minArray(self, numbers: List[int]) -> int:
if len(numbers) == 0:
return -1
else:
ret = numbers[0]
for x in range(len(numbers) - 1):
if numbers[x] > numbers[x+1]:
ret = numbers[x+1]
break
return ret
Java 方法一: lc的測試樣例中並沒有 數組爲空的情況,而且 break
語句也可以去掉。
class Solution {
public int minArray(int[] numbers) {
int ret = numbers[0];
for(int i=0; i<numbers.length-1; ++i){
if(numbers[i] > numbers[i+1]){
ret = numbers[i+1];
break;
}
}
return ret;
}
}
易錯點:
🤷♂️
總結:
- 有時候打字快也是有好處的。