旋轉(zhuǎn)數(shù)組最小值

將一個非遞減序列的某一處切一刀卦睹,再把前半段序列放到后半段序列的后面泳猬,這樣組成的新序列叫做“旋轉(zhuǎn)數(shù)組”括勺。要求獲取一個旋轉(zhuǎn)數(shù)組的最小值均澳。給定數(shù)組arr及它的大小n,請返回最小值垃杖。

測試樣例:
[4,1,2,3,3],5
返回:1

思路

如果旋轉(zhuǎn)的長度為0,即arr[0]<arr[n-1],數(shù)組仍然是一個非遞減序列,直接返回第一個元素即可.

否則將數(shù)組看成兩個排序的子數(shù)組, 最小的元素就是兩個數(shù)組的分界點.用二分查找的思想去查找分界點.

如果arr[lo]>arr[mid],說明arr[mid]肯定落在了第二個子數(shù)組上,此時hi=mid.
如果arr[mid]>arr[hi],說明arr[mid]肯定落在了第一個子數(shù)組上,此時lo=mid.
lo和hi逐步向分界點逼近,直到arr[lo]是第一個子數(shù)組的最后一個元素,arr[hi]元素是第二個子數(shù)組的第一個元素,即分界點.此時返回arr[hi].

如果上述兩個條件都不滿足,說明arr[lo]<=arr[mid],并且arr[hi]>=arr[mid],又有arr[lo]>=arr[hi],得出arr[lo]=arr[mid]=arr[hi].此時沒有辦法縮小范圍.只能通過遍歷的方式去查找最小值.

代碼

 public int getMin(int[] arr, int n) {
        int lo=0,hi=n-1;
        int mid=0;
        if(arr[lo]<arr[hi]){
            return arr[lo];
        } 
        while(lo!=hi-1){                 
            mid=lo+(hi-lo)/2;            
            if(arr[lo]>arr[mid]){    
                hi=mid;
            }
            else if(arr[mid]>arr[hi]){ 
                lo=mid;
            }
            else{              
                while(lo<=hi&&arr[lo]==arr[hi]){
                    lo++;
                }
                return arr[lo];
            }
        }
        return arr[hi];
    }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末男杈,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子调俘,更是在濱河造成了極大的恐慌伶棒,老刑警劉巖泉瞻,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異苞冯,居然都是意外死亡,警方通過查閱死者的電腦和手機侧巨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門舅锄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人司忱,你說我怎么就攤上這事皇忿。” “怎么了坦仍?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵鳍烁,是天一觀的道長。 經(jīng)常有香客問我繁扎,道長幔荒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任梳玫,我火速辦了婚禮爹梁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘提澎。我一直安慰自己姚垃,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布盼忌。 她就那樣靜靜地躺著积糯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谦纱。 梳的紋絲不亂的頭發(fā)上看成,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音服协,去河邊找鬼绍昂。 笑死,一個胖子當著我的面吹牛偿荷,可吹牛的內(nèi)容都是我干的窘游。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼跳纳,長吁一口氣:“原來是場噩夢啊……” “哼忍饰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起寺庄,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤艾蓝,失蹤者是張志新(化名)和其女友劉穎力崇,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赢织,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡亮靴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了于置。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茧吊。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖八毯,靈堂內(nèi)的尸體忽然破棺而出搓侄,到底是詐尸還是另有隱情,我是刑警寧澤话速,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布讶踪,位于F島的核電站,受9級特大地震影響泊交,放射性物質(zhì)發(fā)生泄漏乳讥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一廓俭、第九天 我趴在偏房一處隱蔽的房頂上張望雏婶。 院中可真熱鬧,春花似錦白指、人聲如沸留晚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽错维。三九已至,卻和暖如春橄唬,著一層夾襖步出監(jiān)牢的瞬間赋焕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工仰楚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留隆判,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓僧界,卻偏偏與公主長得像侨嘀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子捂襟,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

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

  • 最近在讀< >時,了解到了很多常用的排序算法,故寫一篇讀書筆記記錄下這些排序算法的思路和實現(xiàn). 冒泡排序 冒泡排序...
    SylvanasSun閱讀 682評論 0 0
  • 旋轉(zhuǎn)數(shù)組的最小數(shù)字 題目 給定一個遞增的旋轉(zhuǎn)數(shù)組A咬腕,返回旋轉(zhuǎn)數(shù)組中的最小值。旋轉(zhuǎn)數(shù)組:給定一個已排序的數(shù)組葬荷,假設(shè)為...
    藍雪冬荷閱讀 451評論 0 0
  • 一. 寫在前面 要學(xué)習(xí)算法涨共,“排序”是一個回避不了的重要話題纽帖,在分析完并查集算法和常用數(shù)據(jù)結(jié)構(gòu)之后,今天我們終于可...
    Leesper閱讀 2,523評論 0 40
  • 四. 走向世界之巔——快速排序 你可能會以為歸并排序是最強的算法了举反,其實不然懊直。回想一下火鼻,歸并的時間效率雖然高吹截,但空...
    Leesper閱讀 1,636評論 9 7
  • 背小包,是極簡生活的開始晨逝! 像我一般都會背雙肩包蛾默,感覺有太多的東西要裝進去:書,手機捉貌,耳機支鸡,傘,唇膏等等趁窃,感覺不背...
    好聽的暖陽閱讀 266評論 1 2