每天一題LeetCode【第24天】

T33. Search in Rotated Sorted Array【Medium

題目

假設(shè)有一個升序的數(shù)組以某個未知的支點旋轉(zhuǎn)袜蚕。

(例如塞祈,0 1 2 3 4 5 6 7 可以變成 4 5 6 7 0 1 2

假設(shè)這個數(shù)組中沒有重復的元素,給你一個 target(目標數(shù)),如果在這個數(shù)組中找到則返回它的 index,如果找不到就返回 -1

思路

首先,一般的有序的數(shù)組众旗,查找一個數(shù)字一般都是用二分法,因為這樣比較有效率趟畏。

按題中說法旋轉(zhuǎn)數(shù)組后贡歧,分成的兩半仍然是排好序的數(shù)組。

例如赋秀,4 5 6 7 0 1 2艘款,左邊的 4 5 6 7,以及右邊的 0 1 2 都是排好序的沃琅,可以先確定 target 在哪邊哗咆,然后繼續(xù)二分查找。不過這個代碼是從中間二分益眉,分到的一半可能還是有兩段排序的代碼晌柬,需要繼續(xù)分,就是很神奇的代碼郭脂。

具體看代碼以及注釋~還是這句話年碘,最好自己拿個例子試試,瞬間清晰展鸡!

信我 (? ??_??)? 屿衅!

代碼

代碼取自 Top Solution,稍作注釋

public int search(int[] nums, int target) {
        //定位數(shù)組頭和尾
        int start = 0;
        int end = nums.length - 1;
        //start > end時表示里面不包含了莹弊,跳出循環(huán)
        while (start <= end){
            int mid = (start + end) / 2;
            //找到匹配值涤久,返回index
            if (nums[mid] == target)
                return mid;
            //通過nums[start] <= nums[mid]表明start~mid這段是正確升序的
            if (nums[start] <= nums[mid]){
            //這就是二分法的做法涡尘,判斷點在哪里,然后通過把start或者end賦予新的mid左右的值响迂,表示選擇前一段或者后一段
                 if (target < nums[mid] && target >= nums[start]) 
                    end = mid - 1;
                 else
                    start = mid + 1;
            } 
            //通過nums[mid] <= nums[end]表明mid ~ end這段是正確升序的
            if (nums[mid] <= nums[end]){
             //這就是二分法的做法考抄,判斷點在哪里,然后通過把start或者end賦予新的mid左右的值蔗彤,表示選擇前一段或者后一段
                if (target > nums[mid] && target <= nums[end])
                    start = mid + 1;
                 else
                    end = mid - 1;
            }
        }
        //不存在的川梅,返回-1
        return -1;
    }

補充

注意啦~這里是代碼里的東西要補充說一下!一開始不明白這代碼為什么要這么多if然遏。

這里是有對應(yīng)關(guān)系的贫途,先判斷在 start~mid是升序的才能用 target < nums[mid] && target >= nums[start] ,來判斷 target 在不在這一段待侵,然后若不是才說是在 mid ~ end的丢早。(希望只有我一個人最開始第一眼沒有看出來 ╮(??? ????)╭...)

      if (nums[start] <= nums[mid]){
          if (target < nums[mid] && target >= nums[start]) 
               end = mid - 1;
          else
               start = mid + 1
      }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市诫给,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌啦扬,老刑警劉巖中狂,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異扑毡,居然都是意外死亡胃榕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門瞄摊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勋又,“玉大人,你說我怎么就攤上這事换帜⌒ㄈ溃” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵惯驼,是天一觀的道長蹲嚣。 經(jīng)常有香客問我,道長祟牲,這世上最難降的妖魔是什么隙畜? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮说贝,結(jié)果婚禮上议惰,老公的妹妹穿的比我還像新娘。我一直安慰自己乡恕,他們只是感情好言询,可當我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布俯萎。 她就那樣靜靜地躺著,像睡著了一般倍试。 火紅的嫁衣襯著肌膚如雪讯屈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天县习,我揣著相機與錄音涮母,去河邊找鬼。 笑死躁愿,一個胖子當著我的面吹牛叛本,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播彤钟,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼来候,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了逸雹?” 一聲冷哼從身側(cè)響起营搅,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎梆砸,沒想到半個月后转质,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡帖世,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年休蟹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片日矫。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖哪轿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情窃诉,我是刑警寧澤备埃,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布褐奴,位于F島的核電站,受9級特大地震影響敦冬,放射性物質(zhì)發(fā)生泄漏辅搬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一介蛉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧溶褪,春花似錦、人聲如沸猿妈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽彭则。三九已至鳍刷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間俯抖,已是汗流浹背输瓜。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芬萍,地道東北人尤揣。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像柬祠,于是被迫代替她去往敵國和親北戏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,492評論 2 348

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

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗瓶盛。 張土汪:刷leetcod...
    土汪閱讀 12,738評論 0 33
  • 1. Two Sum 用hash可以得到O(n)時間的解法最欠,用python中的enumerate函數(shù)示罗,可以獲得元素...
    Morphiaaa閱讀 431評論 0 0
  • 題目要求是:給定一個數(shù)組惩猫,數(shù)組里面都是按升序拍好的數(shù)字,并且無重復數(shù)字蚜点;另外給一個比較的數(shù)字target轧房,查找這個...
    其中一個cc閱讀 157評論 0 0
  • T34. Search for a Range【Medium】 題目 給定以升序排序的整數(shù)數(shù)組,找到給定目標值(t...
    草稿紙反面閱讀 493評論 0 1
  • 早上好绍绘!#幸福實修#~每天進步1%#幸福實修12班-09-唐潔--富陽# 20171003(8/60) 【幸福三朵...
    你謝謝閱讀 156評論 0 0