leetcode:旋轉(zhuǎn)數(shù)組的最小數(shù)字

1.題目描述

把一個數(shù)組最開始的若干個元素搬到數(shù)組的末尾山卦,我們稱之為數(shù)組的旋轉(zhuǎn)腹泌。
輸入一個非遞減排序的數(shù)組的一個旋轉(zhuǎn)褐澎,輸出旋轉(zhuǎn)數(shù)組的最小元素岩臣。
例如數(shù)組{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉(zhuǎn)脚牍,該數(shù)組的最小值為1向臀。
NOTE:給出的所有元素都大于0,若數(shù)組大小為0诸狭,請返回0券膀。

2.解題思路

采用二分法解答這個問題,

mid = low + (high - low)/2

需要考慮三種情況:

(1)array[mid] > array[high]:

出現(xiàn)這種情況的array類似[3,4,5,6,0,1,2]驯遇,此時最小數(shù)字一定在mid的右邊芹彬。

low = mid + 1

(2)array[mid] == array[high]:

出現(xiàn)這種情況的array類似 [1,0,1,1,1] 或者[1,1,1,0,1],此時最小數(shù)字不好判斷在mid左邊

還是右邊,這時只好一個一個試 叉庐,

high = high - 1

(3)array[mid] < array[high]:

出現(xiàn)這種情況的array類似[2,2,3,4,5,6,6],此時最小數(shù)字一定就是array[mid]或者在mid的左

邊舒帮。因為右邊必然都是遞增的。

high = mid

注意這里有個坑:如果待查詢的范圍最后只剩兩個數(shù)陡叠,那么mid 一定會指向下標靠前的數(shù)字

比如 array = [4,6]

array[low] = 4 ;array[mid] = 4 ; array[high] = 6 ;

如果high = mid - 1会前,就會產(chǎn)生錯誤, 因此high = mid

但情形(1)中l(wèi)ow = mid + 1就不會錯誤

package com.wuli.algorithm.旋轉(zhuǎn)數(shù)組;

/**
 * @author wuli
 * @date 2019/12/17
 *
 * 把一個數(shù)組最開始的若干個元素搬到數(shù)組的末尾匾竿,我們稱之為數(shù)組的旋轉(zhuǎn)瓦宜。
 * 輸入一個非遞減排序的數(shù)組的一個旋轉(zhuǎn),輸出旋轉(zhuǎn)數(shù)組的最小元素岭妖。
 * 例如數(shù)組{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉(zhuǎn)临庇,該數(shù)組的最小值為1。
 * NOTE:給出的所有元素都大于0昵慌,若數(shù)組大小為0假夺,請返回0。
 */

public class Solution {
    public int minNumberInRotateArray(int[] array) {
        int low = 0;
        int high = array.length - 1;
        while (low < high) {
            int mid = low + (high - low) / 2;
            if (array[mid] > array[high]) {
                low = mid + 1;
            } else if (array[mid] == array[high]) {
                high = high - 1;
            } else {
                high = mid;
            }
        }
        return array[low];
    }
}

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末斋攀,一起剝皮案震驚了整個濱河市已卷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌淳蔼,老刑警劉巖侧蘸,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鹉梨,居然都是意外死亡讳癌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門存皂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晌坤,“玉大人,你說我怎么就攤上這事≈璨ぃ” “怎么了它改?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長商乎。 經(jīng)常有香客問我搔课,道長,這世上最難降的妖魔是什么截亦? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任爬泥,我火速辦了婚禮,結果婚禮上崩瓤,老公的妹妹穿的比我還像新娘袍啡。我一直安慰自己,他們只是感情好却桶,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布境输。 她就那樣靜靜地躺著,像睡著了一般颖系。 火紅的嫁衣襯著肌膚如雪嗅剖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天嘁扼,我揣著相機與錄音信粮,去河邊找鬼。 笑死趁啸,一個胖子當著我的面吹牛强缘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播不傅,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼旅掂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了访娶?” 一聲冷哼從身側響起商虐,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎崖疤,沒想到半個月后秘车,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡戳晌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年鲫尊,在試婚紗的時候發(fā)現(xiàn)自己被綠了痴柔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沦偎。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出豪嚎,到底是詐尸還是另有隱情搔驼,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布侈询,位于F島的核電站舌涨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏扔字。R本人自食惡果不足惜囊嘉,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望革为。 院中可真熱鬧扭粱,春花似錦、人聲如沸震檩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抛虏。三九已至博其,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間迂猴,已是汗流浹背慕淡。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沸毁,地道東北人儡率。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像以清,于是被迫代替她去往敵國和親儿普。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容