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

2021-10-02 14:11:21 字數 849 閱讀 6209

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。

輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。

例如陣列為的乙個旋轉,該陣列的最小值為1。

note:給出的所有元素都大於0,若陣列大小為0,請返回0。

分析題目的幾個特點:

(1) 陣列非遞減

(2) 旋轉陣列只是簡單地將前面若干個元素搬到陣列末尾

(3) 陣列元素都大於0

思路一: 簡單粗暴

從這三個特點出發,最簡單的想法:我從陣列後面往前找就好啦,最小值就在陣列的 「山谷」 裡。例如旋轉陣列是,從後往前找,數字大小呈現的規律是非遞增,即前乙個數字一定大於或等於當前數字,如 2>1;當出現前乙個數字比當前數字小的情況,也就找到的 「山谷」,找到最小值(前乙個數字),如 1<5。演算法實現下來,時間複雜度是 o(n)。**如下:

class

solution

int pre =

100000

;while

(len>0)

pre = rotatearray[len-1]

; len--;}

}};

思路二:公升級版

這道題被歸納在【查詢和排序】的考點內,暗示大家使用查詢和排序方法去解決。想法也很簡單,就是對陣列進行從小到大的排序,然後返回陣列的第乙個元素即可。**會很複雜?/微笑 不會!

class

solution

};

當然還是建議各位小白(比如我)自己把經典的排序演算法都寫一遍,不寫不知道,一寫嚇一跳(劃掉)。

劍指offer 旋轉陣列的最小數

題目描述 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。public class test system.out.pr...

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

題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個排好序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。分析 這道題最直觀的解法並不難。從頭到尾遍歷陣列一次,就能找出最小的元素,時間複雜度顯然是o n 但這個思路沒有利用輸入陣列的特性...

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

記錄來自 劍指offer 上的演算法題。題目描述如下 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個選擇,輸出旋轉陣列的最小元素。例如陣列是的乙個旋轉,該陣列的最小值是1。這裡可以採用二分查詢的想法,使用兩個指標,乙個指向第乙個元素,乙個指向末尾元素,...