力扣 二分查找變形

先找個(gè)例子寫(xiě)出來(lái)然后再找規(guī)律寫(xiě)代碼锅睛,然后去找測(cè)試用例運(yùn)行疚膊,通過(guò)例子去找自己邏輯沒(méi)有考慮全面的地方义辕,但在企業(yè)的項(xiàng)目需求中,可能并沒(méi)有好的示例寓盗,所以要自己想好if的條件判斷灌砖,一定要先理清需求,然后再想好邏輯傀蚌,最后寫(xiě)代碼基显、、喳张、



class Solution {
    public int findMin(int[] nums) {
        int length = nums.length;
        if(length==1) return nums[0];
        // if(length==2) return nums[0]>nums[1]?nums[1]:nums[0];
        int i=0,j=length-1,min=nums[0];
        while (i<=j){
            int mid=(i+j)/2;
            if(nums[mid]<min) min=nums[mid];
            //左邊有序
            if(nums[mid]>nums[i]){
                if(nums[j]<nums[i]){
                    i=mid+1;
                }else {
                    j=mid-1;
                }
            }else {
                if(mid==i) return nums[mid]>nums[j]?nums[j]:nums[mid];
                if(mid-1>=0 && nums[mid]<nums[mid-1]) return nums[mid];
                else {
                    j=mid-1;
                }
            }
        }
        return min;
    }
}

或者

class Solution {
    public int findMin(int[] nums) {
        int left = 0;
        int right = nums.length - 1;
        while (left < right) {
            int mid = left + (right - left) / 2;
            if (nums[mid] > nums[right]) {          
                left = mid + 1;
            } else {                                
                right = mid;
            }
        }
        return nums[left];
    }
};

作者:armeria
鏈接:https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/solutions/126635/er-fen-cha-zhao-wei-shi-yao-zuo-you-bu-dui-cheng-z/
來(lái)源:力扣(LeetCode)
著作權(quán)歸作者所有续镇。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處销部。

完蛋,我感覺(jué)我的代碼能力退化了

class Solution {
    public int findMin(int[] nums) {
        int i = 0, j = nums.length - 1;
        while (i < j) {
            int m = (i + j) / 2;
            if (nums[m] > nums[j]) i = m + 1;
            else if (nums[m] < nums[j]) j = m;
            else j--;
        }
        return nums[i];
    }
}

如果是這種需要情況分層列舉的時(shí)候制跟,如果第二層的代碼規(guī)律非常的難找或者不好寫(xiě)代碼舅桩,那么就很可能是第一層的規(guī)律找錯(cuò)了,或者是寫(xiě)第一層的時(shí)候沒(méi)有去考慮第二層雨膨、擂涛、、
第一層先分左邊是否有序聊记,然后第二層再去研究大小問(wèn)題撒妈,這樣就很好寫(xiě)
革命尚未成功,同志仍需努力呀排监!

class Solution {
    public boolean search(int[] nums, int target) {
        if (nums == null || nums.length == 0) {
            return false;
        }
        int start = 0;
        int end = nums.length - 1;
        int mid;
        while (start <= end) {
            mid = start + (end - start) / 2;
            if (nums[mid] == target) {
                return true;
            }
            if (nums[start] == nums[mid]) {
                start++;
                continue;
            }
            //前半部分有序
            if (nums[start] < nums[mid]) {
                //target在前半部分
                if (nums[mid] > target && nums[start] <= target) {
                    end = mid - 1;
                } else {  //否則狰右,去后半部分找
                    start = mid + 1;
                }
            } else {
                //后半部分有序
                //target在后半部分
                if (nums[mid] < target && nums[end] >= target) {
                    start = mid + 1;
                } else {  //否則,去后半部分找
                    end = mid - 1;

                }
            }
        }
        //一直沒(méi)找到舆床,返回false
        return false;

    }
}

當(dāng)三道一起寫(xiě)完的時(shí)候棋蚌,再一起看,為什么最后一道題是分層寫(xiě)的挨队?因?yàn)楸容^的數(shù)更多谷暮,i,j,mid,target
所以要分層寫(xiě)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市盛垦,隨后出現(xiàn)的幾起案子湿弦,更是在濱河造成了極大的恐慌,老刑警劉巖腾夯,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件颊埃,死亡現(xiàn)場(chǎng)離奇詭異赌蔑,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)竟秫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)娃惯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人肥败,你說(shuō)我怎么就攤上這事趾浅。” “怎么了馒稍?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵皿哨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我纽谒,道長(zhǎng)证膨,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任鼓黔,我火速辦了婚禮央勒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘澳化。我一直安慰自己崔步,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布缎谷。 她就那樣靜靜地躺著井濒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪列林。 梳的紋絲不亂的頭發(fā)上瑞你,一...
    開(kāi)封第一講書(shū)人閱讀 50,084評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音希痴,去河邊找鬼者甲。 笑死,一個(gè)胖子當(dāng)著我的面吹牛润梯,可吹牛的內(nèi)容都是我干的过牙。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼纺铭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼寇钉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起舶赔,我...
    開(kāi)封第一講書(shū)人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤扫倡,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體撵溃,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疚鲤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缘挑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片集歇。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖语淘,靈堂內(nèi)的尸體忽然破棺而出诲宇,到底是詐尸還是另有隱情,我是刑警寧澤惶翻,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布姑蓝,位于F島的核電站,受9級(jí)特大地震影響吕粗,放射性物質(zhì)發(fā)生泄漏纺荧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一颅筋、第九天 我趴在偏房一處隱蔽的房頂上張望宙暇。 院中可真熱鬧,春花似錦垃沦、人聲如沸客给。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蜻拨,卻和暖如春池充,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背缎讼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工收夸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人血崭。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓卧惜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親夹纫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子咽瓷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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