資料結構練習(31)旋轉陣列的最小元素

2022-09-16 00:30:15 字數 495 閱讀 4050

旋轉陣列的最小元素(只針對單調增陣列)

思路:1. 如果 a[mid] < a[right] 則我們可以看出,右側的資料是單調增的,所以最小值只能在 [left, mid] 區間內。

2. 如果 a[mid] > a[right] 則可以觀察出來,左側的資料是是單調增的,所以最小值只能在 [mid, right] 旋轉區間內。

3. 如果 a[mid] == a[right] 則此時就要分情況討論了,因為可能會同時存在 形如 和

兩種情況下,無法確切推導出來最小值在左邊還是右邊,於是呼叫遞迴,分別求出左右側的最小值輸出即可。

int getminhelper(const

int a, int left, int

right)

else

if (a[mid] >a[right])

else

}return

min(a[left], a[right]);

}

資料結構與演算法 旋轉陣列的最小數字

題目描述 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0 以下資料為特殊情況需要考慮 int array 10 測試通過...

旋轉陣列的最小元素

題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個排好序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。解題 類似二分查詢,使用兩個指標 left right 指向一前一後,一般情況下arr left 一定大於等於arr right ...

旋轉陣列的最小元素

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如有如下陣列 旋轉之後如下 此時需要找出當前旋轉陣列的最小值,由於陣列是遞增的,所以旋轉之後前面的陣列元素會大於後面陣列的元素,也就是陣列大於。因此採用二分查詢的方法找出最小...