二分法旋轉陣列找最小數

2021-10-19 12:46:34 字數 570 閱讀 9295

一、題目描述

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。

輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。

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

示例1輸入

[3,4,5,1,2]

返回值1

二、思路

這道題要求用二分法,一開始用的是遍歷的方法,時間複雜度是o(n),後來看到題目要求就改用二分法。

用兩個指標left和right,left指向陣列a的第乙個數,right指向陣列a的最後乙個數。mid=(left+right)/2。當a[left]class

solution

mid=

(left+right)/2

;if(rotatearray[left]

<=rotatearray[mid])if

(rotatearray[mid]

<=rotatearray[right]

) right=mid;

}return rotatearray[mid];}

};

二分法解旋轉陣列的最小數字

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如,陣列 3,4,5,1,2 為 1,2,3,4,5 的乙個旋轉,該陣列的最小值為1。示例 1 輸入 3,4,5,1,2 輸出 1 示例 2 輸入 2,2,2,0,1 輸出 ...

二分法4 旋轉陣列的最小數字

將乙個排序好的陣列的前一部分和後一部分進行調換,找到這個陣列中的 將乙個排好序的陣列開始的某幾個元素搬到陣列末尾,然後找到該陣列的最小元素。這個題一看如果遍歷一遍陣列肯定可以找到,但並沒有利用旋轉陣列的特性,為o n 可以發現特點就是最小的數字是前後兩個陣列的分界點,如果按原來的思路就是遍歷,然後找...

二分法之旋轉陣列系列

給定乙個陣列,將陣列中的元素向右移動 k 個位置,其中 k 是非負數。要求使用空間複雜度為 o 1 的 原地 演算法。解法一 雙重迴圈class solution def rotate self,nums list int k int none do not return anything,modi...