LeetCode 454 4Sum II

題目

Given four lists A, B, C, D of integer values, compute how many tuples (i, j, k, l) there are such that A[i] + B[j] + C[k] + D[l] is zero.

To make problem a bit easier, all A, B, C, D have same length of N where 0 ≤ N ≤ 500. All integers are in the range of -228 to 228 - 1 and the result is guaranteed to be at most 231 - 1.

Example:

Input:
A = [ 1, 2]
B = [-2,-1]
C = [-1, 2]
D = [ 0, 2]

Output:
2

Explanation:
The two tuples are:
(0, 0, 0, 1) -> A[0] + B[0] + C[0] + D[1] = 1 + (-2) + (-1) + 2 = 0
(1, 1, 0, 0) -> A[1] + B[1] + C[0] + D[0] = 2 + (-1) + (-1) + 0 = 0


解法思路(一)

  • 用四重循環(huán),做一個 O(N4) 的解法,在 5004 的數(shù)量級的情況下肯定是跑不完的体啰;
  • N = 500 的話,用 O(N2) 的時間復(fù)雜度的解法去跑是可行的蹦哼;
如何實現(xiàn)一個 O(N2) 的解法呢?
  • 如果把 C 和 D 兩兩組合之和存進(jìn)一個 HashMap 中要糊,key 是兩兩組合之和纲熏,value 是該和出現(xiàn)的次數(shù),這個動作的時間復(fù)雜度是 O(N2);
  • 那么 A 和 B 的兩兩組合之和去這個 HashMap 中匹配局劲,這個匹配的動作是 O(1) 的勺拣,而 A 和 B 的兩兩組合之和是 O(N2) 的,則總的時間復(fù)雜度是 O(2N2) = O(N2)鱼填;

解法實現(xiàn)(一)

時間復(fù)雜度
  • O(N2)药有;
空間復(fù)雜度
  • O(N2)
關(guān)鍵字

查找表 HashMap 二維將一維 O(N^2) 降 O(1)

package leetcode._454;

import java.util.HashMap;

public class Solution454_1 {

    public int fourSumCount(int[] A, int[] B, int[] C, int[] D) {

        HashMap<Integer, Integer> CDCombination = new HashMap<>(C.length * D.length);
        for (int i = 0; i < C.length; i++) {
            for (int j = 0; j < D.length; j++) {
                int CDAdd = C[i] + D[j];
                if (CDCombination.containsKey(CDAdd)) {
                    CDCombination.put(CDAdd, CDCombination.get(CDAdd) + 1);
                } else {
                    CDCombination.put(CDAdd, 1);
                }
            }
        }

        int combination = 0;
        for (int i = 0; i < A.length; i++) {
            for(int j = 0; j < B.length; j++) {
                int complement = 0 - A[i] - B[j];
                if (CDCombination.containsKey(complement)) {
                    combination += CDCombination.get(complement);
                }
            }
        }

        return combination;
    }

    public static void main(String[] args) {
        int[] A = {1, 2};
        int[] B = {-2, -1};
        int[] C = {-1, 2};
        int[] D = {0, 2};

        int result = (new Solution454_1()).fourSumCount(A, B, C, D);;
        System.out.println(result);
    }

}

返回 LeetCode [Java] 目錄

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市苹丸,隨后出現(xiàn)的幾起案子愤惰,更是在濱河造成了極大的恐慌,老刑警劉巖赘理,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宦言,死亡現(xiàn)場離奇詭異,居然都是意外死亡商模,警方通過查閱死者的電腦和手機(jī)奠旺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來施流,“玉大人响疚,你說我怎么就攤上這事∩┏粒” “怎么了稽寒?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長趟章。 經(jīng)常有香客問我,道長慎王,這世上最難降的妖魔是什么蚓土? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮赖淤,結(jié)果婚禮上蜀漆,老公的妹妹穿的比我還像新娘。我一直安慰自己咱旱,他們只是感情好确丢,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吐限,像睡著了一般鲜侥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诸典,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天描函,我揣著相機(jī)與錄音,去河邊找鬼。 笑死舀寓,一個胖子當(dāng)著我的面吹牛胆数,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播互墓,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼必尼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了篡撵?” 一聲冷哼從身側(cè)響起胰伍,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酸休,沒想到半個月后骂租,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡斑司,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年渗饮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宿刮。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡互站,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤迹栓,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布弧可,位于F島的核電站,受9級特大地震影響睹酌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一之景、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧膏潮,春花似錦锻狗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至叠纷,卻和暖如春刻帚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背讲岁。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工我擂, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留衬以,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓校摩,卻偏偏與公主長得像看峻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子衙吩,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

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

  • 專業(yè)考題類型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項A選項B選項C選項D選項E選項F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 8,990評論 0 13
  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,342評論 0 2
  • 1. 關(guān)于診斷X線機(jī)準(zhǔn)直器的作用互妓,錯誤的是()。 (6.0 分) A. 顯示照射野 B. 顯示中心線 C. 屏蔽多...
    我們村我最帥閱讀 10,401評論 0 5
  • Description Given four lists A, B, C, D of integer values...
    Nancyberry閱讀 156評論 0 0
  • 問題: Given four lists A, B, C, D of integer values, comput...
    Cloudox_閱讀 127評論 0 0