一開始的時候我也是打算遍歷陣列去尋找滿足條件的解
但是這樣的演算法的時間複雜度就太高了
所以就在網上看了一下別人的思路
具體的思路是
因為一開始的排序的規則是非減的排序規則,所以旋轉以後的陣列會分為來個陣列
乙個類似與遞增陣列,乙個類似於從最小開始的遞增的陣列。而我們要找的是最小的數字,所以便可以用倆個指標來解決這個問題。
首先第乙個指標去找到遞增陣列的最大的值
第二個指標去找到第二個遞增陣列的最小的值
然後結束的標準是兩個指標差乙個元素。
特殊的情況分為兩個
一開始mid取為start的原因是 如果它是乙個遞增的陣列那麼便可以直接返回第乙個元素就可以了
二 是對於如果裡面存在好多元素相同的內容的話,那麼我們只能按序號查詢啦
package 劍指offer.旋轉陣列最小的元素;
public class solution
mid = (start+end)/2;
if(array[mid] <= array[end])else if(array[mid]>=array[start])else if(array[mid]== array[start] && array[mid] == array[end])
}return array[mid];
}public static int getmininorder(int arr,int mid,int end)
}return result;
}public static void main(string args) ;
system.out.println(minnumberinrotatearray(l1));
}}
旋轉陣列中的最小數字
把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減序列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。查詢乙個陣列中最小值,直接遍歷當然是最簡單的方式,但是時間複雜度為o n 首先分析旋轉陣列的特點,假設旋轉陣列的前半部分為h,後半部分為t...
旋轉陣列中的最小數字
思路 遞增序列。旋轉陣列中,由於是把遞增排序陣列前面若干個數字搬到陣列後面,一次第乙個數字總是大於等於最後乙個數字。1 乙個特例,如果把排序樹組的前面0個元素搬到最後面,即排序陣列本身,此時陣列中的最後乙個陣列就是最小的數字,所以在以下 中,把mid初始化為start,一旦發現陣列中第乙個數字小於最...
旋轉陣列中的最小數字
把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。以下有兩個方法,第乙個方法用來求旋轉陣列中的最小值。第二種方法求旋轉陣列...