劍指offer六之求旋轉陣列的最小數字

2021-09-07 15:04:57 字數 915 閱讀 6331

一、題目

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

二、解題思路

求非遞減陣列旋轉之後最小值,也就是尋找分界點,分界點前後都是非遞減陣列,分界點後面的非遞減陣列比分界點前面的陣列都要小,因此對旋轉陣列按順序查詢,當出現後乙個數比前乙個小時,這個數就是最小值,若沒有出現後乙個數比前乙個數小的情況,這說明這個陣列所有的數都相等,返回陣列第乙個數即可。注意考慮陣列為空的情況,返回0。

三、**

1、解答**

/**

* 求非遞減陣列旋轉之後最小值,也就是尋找分界點,分界點前後都是非遞減陣列,分界點後面的非遞減陣列比分界點前面的陣列都要小,因此對旋轉陣列按順序查詢,當出現後乙個數比前乙個小時,這個數就是最小值,若沒有出現後乙個數比前乙個數小的情況,這說明這個陣列所有的數都相等,返回陣列第乙個數即可。注意考慮陣列為空的情況,返回0 */

public

class

solution

if(array[i]>array[i+1])

}return min;//

若沒有出現後乙個數比前乙個數小的情況,這說明這個陣列所有的數都相等,返回陣列第乙個數即可

}}

view code

2、測試**

public

class

testmain ;

solution s = new

solution();

int min=s.minnumberinrotatearray(array);

system.out.println(min);}}

view code

劍指Offer 求旋轉陣列的最小值

首先介紹下旋轉陣列 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。例如陣列 為 的乙個旋轉。使用二分查詢的思想 根據這個規律就可以用o logn 的時間複雜度來尋找到最小值la package jianzhioffer public class minnumberinrotate...

劍指offer 求旋轉陣列的最小數字

題目描述 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的 旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如 陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所 有元素都大於0,若陣列大小為0,請返回 1。假設陣列中不存在重複元素。思路 利用二分法,找到陣列的...

求旋轉陣列的最小數字(劍指offer)

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