06 旋轉陣列最小值

2021-09-21 13:44:34 字數 869 閱讀 1620

解題思路

採用二分查詢法。

需要考慮三種情況:

array[mid] > array[high]:

出現這種情況的array類似[3,4,5,6,0,1,2],此時最小數字一定在mid的右邊。

low = mid + 1

array[mid] == array[high]

出現這種情況的array類似 [1,0,1,1,1] 或者[1,1,1,0,1],此時最小數字不好判斷在mid左邊

還是右邊,這時只好乙個乙個試

high = high - 1

array[mid] < array[high]:

出現這種情況的array類似[2,2,3,4,5,6,6],此時最小數字一定就是array[mid]或者在mid的左

邊。因為右邊必然都是遞增的。

high = mid

public

class

test06

int low=

0,high=len-1;

while

(lowelse

if(array[mid]

==array[high]

)else

}return array[low];}

public

static

void

main

(string[

] args)

;int result=t6.

minnumberinrotatearray

(array)

; system.out.

println

(result);}

}

旋轉陣列求最小值

這是letcode上的一道題目 leetcode find minimum in rotated sorted array 一 什麼是旋轉陣列呢,就是乙個有序的陣列,在從某乙個位置開始,旋轉到陣列的另一端,例如 0 1 2 3 4 5 6 4 5 6 0 1 2 3 二 使用暴力的方式就是遍歷這個陣...

旋轉陣列的最小值

題目 把乙個陣列的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小值。例如陣列為的乙個旋轉,該陣列的最小值為1。解析 1 我們可以用順序查詢的方法找到陣列中的最小值,但是這個方法沒有用到旋轉陣列區域性有序的特點。2 和二分查詢法一樣,我們用兩個指標...

旋轉陣列的最小值

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。思路 類似二分查詢,不斷縮小查詢範圍 int minnumberinro...