旋轉陣列的最小數字

2021-10-08 21:40:38 字數 1054 閱讀 7811

旋轉陣列的最小數字

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

解題思路

如果陣列是,那麼該陣列已經是有序的,直接第乙個就是要找的元素

如果陣列是

首先low指標指向第乙個元素,high指標指向最後乙個元素

判斷low指標指向的元素是否大於high指標指向的元素,大於進入迴圈,將mid=low+((high - low)/2)獲得,迴圈中進行如下判斷

判斷low指標指向的元素是否小於mid指標指向的元素,如果小於說明low-mid都是遞增的,最小值不存在[low,mid]這個區間,將low置為mid

判斷high指標指向的元素是否大於mid指標指向的元素,如果大於,說明[mid,high]區間是遞增的,此時將high設定為mid

如果最終high - low為1了,那麼此時high指標會指向旋轉陣列的最小值,low指標會指向旋轉陣列的最大值,退出迴圈

如果陣列是,這種情況比較特殊,只能通過將陣列進行一次遍歷,才能找出最小值

public

class

solution

//第三種情況判斷

if(array[low]

== array[high]

&& array[low]

== array[high]

)//如果指標low指向的元素 <= 指標mid指向的元素,說明[low, mid]是遞增的

if(array[low]

<= array[mid]

)else

if(array[high]

>= array[mid])}

return array[mid];}

public

intfindmax

(int

array,

int low,

int high)

return minvalue;

}}

旋轉陣列最小數字

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列 為的乙個旋轉,該陣列的最小值為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.分析 首先我們可以看到原陣列為遞增排序的,並且以...