旋轉陣列的最小數字

2021-10-08 12:11:49 字數 564 閱讀 3769

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

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

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

class

solution

else

if(rotatearray[mid]

)else

}return rotatearray[first]

;//輸出最小值}}

;

3.演算法分析

方法一:

暴力方法:直接遍歷一遍陣列,即可找到最小值。但是本題的附加條件就沒有用上。肯定不是面試官所期望的答案。

方法二:二分查詢

這種二分查詢難就難在,arr[mid]跟誰比。

我們的目的是:當進行一次比較時,一定能夠確定答案在mid的某一側。一次比較為 arr[mid]跟誰比的問題。

一般的比較原則有:

這裡我們把target 看作是右端點,來進行分析,那就要分析以下三種情況,看是否可以達到上述的目標。

旋轉陣列最小數字

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列 為的乙個旋轉,該陣列的最小值為1。code int min int numbers,int length int low 0 int high length 1 in...

旋轉陣列最小數字

旋轉陣列最小數字 劍指offer 二分查詢 題目描述 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。解題思路 題目要求找到最小元素,第一反應是排序,但陣列基本有序直接排序浪費效能。結合資料的特點前半部分遞增,後半部分遞減,...

旋轉陣列的最小數字

1.問題描述 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出該旋轉陣列的最小元素。例如陣列 3,4,5,1,2 為 1,2,3,4,5 的乙個旋轉,該陣列的最小值為1.來自 劍指offer 2.分析 首先我們可以看到原陣列為遞增排序的,並且以...