劍指offer 刷題記錄 旋轉陣列的最小數字

2021-08-25 14:04:24 字數 1154 閱讀 7870

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

思路1:直接遍歷陣列,找最小的數。

// 旋轉陣列的最小數字

public class solution

int min = array[0];

for (int i = 0; i < array.length; i++)

} return min;

}}

缺點:沒有利用旋轉陣列的特點。時間複雜度高。

思路2:對旋轉陣列來說,實際上我們可以將它劃分為兩個排序的子陣列,而且前面子陣列的元素都大於等於後面子陣列的元素,並且最小元素是這兩個子陣列的分界。再利用二分查詢的思想即可。

// 旋轉陣列的最小數字

public class solution

int startindex = 0;

int endindex = array.length - 1;

int midindex = startindex;

// 當陣列發生了旋轉時

while (array[startindex] >= array[endindex])

midindex = (startindex + endindex) / 2;

// 如果中間的數字於陣列1

if (array[startindex] <= array[midindex])

// 如果中間的數字於陣列2

if (array[endindex] >= array[midindex])

// 如果中間的數既等於startindex上的數 也等於endindex上的數

if (array[midindex] == array[startindex] && array[midindex] == array[endindex])

} return array[midindex];

} public int minofarray(int array, int index1, int index2)

} return result;

}}

劍指 offer 刷題記錄

任誰都躲不過找工作的問題,好希望能多準備一些時間,奈何時間不等人,每天刷幾道題,並且記錄下來吧 def replacespace s write code here num space 0 new s for i in range len s if i num space 1 for i in ra...

劍指offer刷題記錄

遞迴法 鍊錶的後續遍歷,並用self.k來記錄倒數節點的位置,找到了就返回找到的節點,否則返回none coding utf 8 class listnode def init self,x self.val x self.next none class solution def init self...

劍指offer刷題記錄 綜合

將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 輸入描述 輸入乙個字串,包括數字字母符號,可以為空 輸出描述 如果是合法的數值表達則返回該數字,否則返回0 做這個題目做的真的很煩,最麻煩的就是判斷當前是否越界。可儲存的最大的正數末位為7,可儲存...