每天一題LeetCode【第15天】

T18. 4Sum【Medium

題目

給一個有 n 個整數(shù)的數(shù)組 S岩饼,找到 S 中的所有和為 target 的四元組(S 中元素 a,b,c,d 使得 a+b+c+d = target )晓勇。找到所有數(shù)組中所有符合要求的四元組缀皱。

注釋: 解答中不能有重復(fù)的四元組

例如, 給出數(shù)組 S = [1, 0, -1, 0, -2, 2],以及 target = 0.

一個解集是:
[
  [-1,  0, 0, 1],
  [-2, -1, 1, 2],
  [-2,  0, 0, 2]
]

思路

① 思路和前面的題很像荧止,在補充里我會放出鏈接

② 主要要注意的是搜索方式以及去重

③ 下面代碼的搜索方式是前兩個數(shù)用兩個嵌套的 for 循環(huán)依次匹配塘雳,后兩個數(shù)是在第二個數(shù)后面的數(shù)段中從頭和尾分別向中間靠攏氏捞,由于排好序了惩妇,所以偏大時株汉,第三個數(shù)往右選,偏小時第四個數(shù)往左選

④ 去重的話通過 while 循環(huán)在四個數(shù)用到的時候分別判斷并且去重歌殃,可以看代碼乔妈,我有標(biāo)注

代碼

代碼取自 Top Solution,稍作注釋

   public List<List<Integer>> fourSum(int[] num, int target) {
        ArrayList<List<Integer>> ans = new ArrayList<>();
        //當(dāng)小于4時不存在氓皱,所以直接返回
        if(num.length<4)return ans;
        //排序
        Arrays.sort(num);
        for(int i=0; i<num.length-3; i++){
            //去掉重復(fù)的數(shù)字
            if(i>0&&num[i]==num[i-1])continue;
            for(int j=i+1; j<num.length-2; j++){
                //去掉重復(fù)的數(shù)字
                if(j>i+1&&num[j]==num[j-1])continue;
                //剩下low和high兩個數(shù)字在后面網(wǎng)中間夾
                int low=j+1, high=num.length-1;
                while(low<high){
                    int sum=num[i]+num[j]+num[low]+num[high];
                    if(sum==target){
                        //相等時加入數(shù)組
                        ans.add(Arrays.asList(num[i], num[j], num[low], num[high]));
                        //這兩個while也是去重
                        while(low<high&&num[low]==num[low+1])low++;
                        while(low<high&&num[high]==num[high-1])high--;
                        low++;
                        high--;
                    }
                    //由于排好序了路召,所以偏大時,第三個數(shù)往右選波材,偏小時第四個數(shù)往左選
                    else if(sum<target)low++;
                    else high--;
                }
            }
        }
        return ans;
    }

補充

leetcode 的第十五題和第十六題的題目代碼思想和這個很相近股淡,可以看一下~

每天一題LeetCode【第14天】
每天一題LeetCode【第13天】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市廷区,隨后出現(xiàn)的幾起案子唯灵,更是在濱河造成了極大的恐慌,老刑警劉巖隙轻,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件埠帕,死亡現(xiàn)場離奇詭異垢揩,居然都是意外死亡,警方通過查閱死者的電腦和手機敛瓷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門叁巨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人琐驴,你說我怎么就攤上這事俘种。” “怎么了绝淡?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵宙刘,是天一觀的道長。 經(jīng)常有香客問我牢酵,道長悬包,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任馍乙,我火速辦了婚禮布近,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘丝格。我一直安慰自己撑瞧,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布显蝌。 她就那樣靜靜地躺著预伺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪曼尊。 梳的紋絲不亂的頭發(fā)上酬诀,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音骆撇,去河邊找鬼瞒御。 笑死,一個胖子當(dāng)著我的面吹牛神郊,可吹牛的內(nèi)容都是我干的肴裙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼涌乳,長吁一口氣:“原來是場噩夢啊……” “哼践宴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起爷怀,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤阻肩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烤惊,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡乔煞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了柒室。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渡贾。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖雄右,靈堂內(nèi)的尸體忽然破棺而出空骚,到底是詐尸還是另有隱情,我是刑警寧澤擂仍,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布囤屹,位于F島的核電站,受9級特大地震影響逢渔,放射性物質(zhì)發(fā)生泄漏肋坚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一肃廓、第九天 我趴在偏房一處隱蔽的房頂上張望智厌。 院中可真熱鬧,春花似錦盲赊、人聲如沸铣鹏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诚卸。三九已至,卻和暖如春递礼,著一層夾襖步出監(jiān)牢的瞬間惨险,已是汗流浹背羹幸。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工脊髓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人栅受。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓将硝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親屏镊。 傳聞我的和親對象是個殘疾皇子依疼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

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

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,748評論 0 33
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理而芥,服務(wù)發(fā)現(xiàn)律罢,斷路器,智...
    卡卡羅2017閱讀 134,707評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,304評論 25 707
  • 最近經(jīng)常覺得自己被困住了!覺察發(fā)現(xiàn)自己對現(xiàn)實生活的不接納误辑,對自己情緒感受的不接納沧踏!總是覺得積極樂觀開朗活潑才是好的...
    竺子閱讀 240評論 0 0
  • 目錄 |哥從大唐來 上一章 雪里藏花造下的傷勢,不易好巾钉。因切經(jīng)脈而去翘狱,傷筋傷脈傷骨。雖是春雨已施妙手砰苍,麻藥去除時潦匈,...
    Candy熱汗淋漓在簡書閱讀 631評論 16 6