Q6 旋轉陣列的最小數字

2021-07-23 23:13:48 字數 629 閱讀 2695

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note:給出的所有元素都大於0,若陣列大小為0,請返回0。

最簡單的方法是遍歷陣列得到最小的元素,演算法複雜度是o(n)。但是沒有利用旋轉陣列的特性,利用它的特性,我們可以用二分查詢的方法降低演算法複雜度。我們會發現旋轉後的陣列可以分為兩個部分,前面部分的元素均大於後面部分的元素。那麼我們可以用兩個指標,乙個指向頭部,乙個指向尾部。如果中間位置的元素大於頭指標指向的元素那麼它處於第乙個部分,可以將頭指標移動到中間元素的位置,縮小查詢範圍;如果中間位置的元素小於尾指標指向的元素那麼它處於第二部分,那麼將尾指標移動到中間元素的位置來縮小查詢範圍。最後如果頭尾指標指向相鄰的元素,那麼尾指標指向的元素就所找的最小數字。

public

class minnumberinrotatearray

return

array[end];

}public

static

void main(string args);

system.out.println(minnumber(array));

}}

6 旋轉陣列 的最小數字

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。演算法 逐個遍歷,時間複雜度為o n 空間複雜度為o 1 class so...

6 旋轉陣列的最小數字

題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。解法1 開始沒有get到這個題目的點,個人感覺旋轉後,遍歷到第乙個...

6 旋轉陣列的最小數字

考察 查詢和排序 1 題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非減排序的陣列 後面數大於或者等於前面的數 的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。2 思路1 陣列...