難度:簡單
題目描述:把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。 note:給出的所有元素都大於0,若陣列大小為0,請返回0。
注:考察二分查詢,二分查詢時陣列是有序的
思路: 利用旋轉數字的特性,旋轉陣列可以看成兩個排序的陣列。採用兩個指標分別指向陣列的第乙個元素和最後乙個元素。第乙個指標總是指向前面遞增陣列的元素,而第二個指標總是指著後面遞增陣列的元素。
尋找中間元素,如果中間元素位於前面的遞增陣列,那麼他應該大於或等於第乙個指標指向的元素,那麼最小元素應該在後面的遞增陣列,這樣把第乙個指標指向中間位置,縮小查詢範圍,移動之後第乙個指標仍然在前面的遞增陣列中;如果中間元素位於後面的遞增陣列,那麼他應該小於或等於第二個指標指向的元素,那麼最小元素應該在前面的遞增陣列,這樣把第二個指標指向中間位置,縮小查詢範圍,移動之後第二個指標仍然在前面的遞增陣列中;
最終第乙個指標指向前面陣列的最後乙個元素,而第二個指標就會指向後面陣列的第乙個元素,此時剛好也是最小的元素。就是說兩指標會指向兩相鄰的元素,這是迴圈條件的結束。(源於劍指offer)
class solution
middle=left+(right-left)/2;
if(rotatearray[middle]>=rotatearray[left])
left=middle;
if(rotatearray[middle]<=rotatearray[right])
right=middle;
}return rotatearray[middle];
}};
劍指Offer 題11(旋轉陣列的最小數
1.題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。2.思路 可把旋轉後的陣列看做兩個有序陣列,以最小值為分界,前面...
劍指offer刷題 11
高質量的 的規範性 清晰的書寫,清晰的布局,合理的命名 應聘者在寫 的時候,最好用完整的英文單詞組合命名變數和函式,以便面試官能一眼讀懂 的完整性 是否完成了基本功能,輸入邊界能否能得到正確的輸出,是否對各種不規範的非法輸入做出了合理的錯誤處理。測試用例 功能測試,邊界測試,負面測試 3種錯誤處理的...
劍指offer 演算法題 09 旋轉陣列問題
題目描述 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。輸入 輸入可能包含多個測試樣例,對於每個測試案例,輸入的第一行為乙個整數n 1 n 1000000 代表旋轉陣列的元素個數。...