一、題目
把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。 例如陣列為的乙個旋轉,該陣列的最小值為1。 note:給出的所有元素都大於0,若陣列大小為0,請返回0。
二、解題思路
求非遞減陣列旋轉之後最小值,也就是尋找分界點,分界點前後都是非遞減陣列,分界點後面的非遞減陣列比分界點前面的陣列都要小,因此對旋轉陣列按順序查詢,當出現後乙個數比前乙個小時,這個數就是最小值,若沒有出現後乙個數比前乙個數小的情況,這說明這個陣列所有的數都相等,返回陣列第乙個數即可。注意考慮陣列為空的情況,返回0。
三、**
1、解答**
/**view code* 求非遞減陣列旋轉之後最小值,也就是尋找分界點,分界點前後都是非遞減陣列,分界點後面的非遞減陣列比分界點前面的陣列都要小,因此對旋轉陣列按順序查詢,當出現後乙個數比前乙個小時,這個數就是最小值,若沒有出現後乙個數比前乙個數小的情況,這說明這個陣列所有的數都相等,返回陣列第乙個數即可。注意考慮陣列為空的情況,返回0 */
public
class
solution
if(array[i]>array[i+1])
}return min;//
若沒有出現後乙個數比前乙個數小的情況,這說明這個陣列所有的數都相等,返回陣列第乙個數即可
}}
2、測試**
publicview codeclass
testmain ;
solution s = new
solution();
int min=s.minnumberinrotatearray(array);
system.out.println(min);}}
劍指Offer 求旋轉陣列的最小值
首先介紹下旋轉陣列 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。例如陣列 為 的乙個旋轉。使用二分查詢的思想 根據這個規律就可以用o logn 的時間複雜度來尋找到最小值la package jianzhioffer public class minnumberinrotate...
劍指offer 求旋轉陣列的最小數字
題目描述 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的 旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如 陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所 有元素都大於0,若陣列大小為0,請返回 1。假設陣列中不存在重複元素。思路 利用二分法,找到陣列的...
求旋轉陣列的最小數字(劍指offer)
把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。輸入乙個非遞減排序的陣列的乙個旋轉 說明這個非遞減陣列可能是遞增陣列如 ...