劍指offer 11 旋轉陣列的最小數字

2021-10-04 16:07:32 字數 889 閱讀 4502

難度簡單35

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如,陣列

[3,4,5,1,2] 為 [1,2,3,4,5] 的乙個旋轉,該陣列的最小值為1。

示例 1:

輸入:[3,4,5,1,2]

輸出:1

示例 2:

輸入:[2,2,2,0,1]

輸出:0

th:這道題主要的關鍵點在於找到遞增後減小的位置,使用二分可以解決。

有三種情況

1.當nums[mid]>nums[right] 說明 一定在右邊 ps : 1 3 4 5 0 2 mid>right left = mid+1;

2.當nums[mid] = nums[right] 說明出現了重複的元素 這個時候要縮小範圍 right = right-1

3.當nums[mid] < nums[right] 說明 一定在左邊 right = mid;

time:o(logn) 當出現 1 1 1 1 會退化到o(n)

space:o(1)

public

intminarray

(int

numbers)

int left =

0,right = length-1;

while

(left < right)

else

if(numbers[mid]

== numbers[right]

)else

}return numbers[left]

;}

劍指offer 11旋轉陣列中最小的數字

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。第一種方法 從頭開始遍歷,當遇到不滿足非遞減排序規律的那個數時,那就是旋...

劍指offer11 旋轉陣列的最小數字

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個公升序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。陣列可能包含重複項。注意 陣列內所含元素非負,若陣列大小為0,請返回 1。樣例 輸入 nums 2,2,2,0,1 輸出 0思路 首先判...

劍指Offer 11 旋轉陣列的最小數字

題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序陣列的乙個旋轉,輸出旋轉陣列的最小元素,例如,陣列為的乙個旋轉,該陣列的最小值為1.思路 設定兩個指標。利用二分查詢法。第乙個指標指向第乙個元素,第二個指向最後乙個元素。找到陣列的中間元素,如果中間的元素大於第乙...