把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入乙個非減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。 例如陣列為的乙個旋轉,該陣列的最小值為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,可儲存...