字典應用:兩個陣列的交集II_Intersection of Two Arrays II_Leetcode #350

閱讀時間約 3 分鐘

題目敘述 Intersection of Two Arrays II

給定兩個輸入陣列,請找出兩個陣列交集的元素,並且依照出現次數輸出。


測試範例

Example 1:

Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2,2]

交集元素:2
對應的出現次數[2,2]

Example 2:

Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [4,9]
Explanation: [9,4] is also accepted.

交集元素:4,9
對應的出現次數[4,9]

約束條件

Constraints:

  • 1 <= nums1.length, nums2.length <= 1000

陣列長度介於1~1000之間。

  • 0 <= nums1[i], nums2[i] <= 1000

每個陣列元素介於0~1000之間。


觀察 交集 與 出現次數

交集就是兩個集合重疊的元素。

接著,可以用字典來記錄每個元素的出現次數。


演算法 用字典來記錄出現次數

先針對兩個輸入陣列建立對應的字典。

接著取交集,接著依照出現次數輸出對應的交集元素。


程式碼 用字典來記錄出現次數

from collections import Counter

class Solution:
def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:

# build number-occurence dictionary for nums1 and nums2
num_occ_dict_1, num_occ_dict_2 = map( Counter, [ nums1, nums2 ] )

# compute intersection
intersection = num_occ_dict_1 & num_occ_dict_2

# output intersection element with corresponding occurrences
return sum( ( [num]*occ for num, occ in intersection.items() ), [] )

複雜度分析

時間複雜度: O(m+n)

兩個陣列依序建立字典,所需時間為O(m)+O(n) = O(m+n)。


空間複雜度: O(m+n)

兩個陣列依序建立字典,所需空間亦為O(m)+O(n) = O(m+n)。


Reference

[1] Intersection of Two Arrays II - LeetCode

86會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
題目敘述 All Ancestors of a Node in a Directed Acyclic Graph 給定一個有向無環圖,請找出每個點的祖先,以陣列的形式返回答案。
題目敘述 Most Profit Assigning Work 公司裡有n位員工,m件任務。 每位員工的能力記錄在worker陣列。 每個任務對應的能力要求和獲利紀錄在difficulty 和profit陣列。 不同的員工可以做同樣的任務。 請問怎麼分配任務可以得到整體最大獲利?
題目敘述 Patching Array 題目給定一個整數陣列, 請問還要補上多少個數字,才能用這些數字的和拼湊出所有1~n的整數。
題目敘述 IPO 新企業準備上市增資,初始資本是w,可以參加k個專案。 每個專案的獲利和投入成本分別記錄在profits和capital陣列。 請問,在盡可能增資的情況下,最後最大的總資本是多少?
題目敘述 Triangle 題目會給我們一個三角形的二維陣列triangle ,每個元素分別代表每個格子的成本,請問我們從最頂端到底部的下墜路徑的最小成本總和是多少? 每次下墜到下一排的時候,可以有兩種選擇: 1.往左下方的格子點移動。 2.往右下方的格子點移動。 測試範例 Examp
題目敘述 Minimum Increment to Make Array Unique 給定一個整數陣列,每回合可以任意挑一個數字進行+1的加法操作。 請問最少需要多少次的+1加法操作,才能讓每個數字都相異?
題目敘述 All Ancestors of a Node in a Directed Acyclic Graph 給定一個有向無環圖,請找出每個點的祖先,以陣列的形式返回答案。
題目敘述 Most Profit Assigning Work 公司裡有n位員工,m件任務。 每位員工的能力記錄在worker陣列。 每個任務對應的能力要求和獲利紀錄在difficulty 和profit陣列。 不同的員工可以做同樣的任務。 請問怎麼分配任務可以得到整體最大獲利?
題目敘述 Patching Array 題目給定一個整數陣列, 請問還要補上多少個數字,才能用這些數字的和拼湊出所有1~n的整數。
題目敘述 IPO 新企業準備上市增資,初始資本是w,可以參加k個專案。 每個專案的獲利和投入成本分別記錄在profits和capital陣列。 請問,在盡可能增資的情況下,最後最大的總資本是多少?
題目敘述 Triangle 題目會給我們一個三角形的二維陣列triangle ,每個元素分別代表每個格子的成本,請問我們從最頂端到底部的下墜路徑的最小成本總和是多少? 每次下墜到下一排的時候,可以有兩種選擇: 1.往左下方的格子點移動。 2.往右下方的格子點移動。 測試範例 Examp
題目敘述 Minimum Increment to Make Array Unique 給定一個整數陣列,每回合可以任意挑一個數字進行+1的加法操作。 請問最少需要多少次的+1加法操作,才能讓每個數字都相異?
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
想要讓自己學外語更輕鬆,或快速了解外文的意思,千萬別錯過這份我個人私藏的清單,強烈推薦給你!對了,就算你還不是方格子會員,現在也可以不註冊會員直接手刀入手喔!
Thumbnail
【吳守禮與他的卡片盒筆記法】 吳守禮是日治時期第一代在臺灣本土培育的高教菁英,也是戰後臺灣大學文學院少數的本省籍師資。他的專長是臺灣閩南方言的研究,並於晚年投入臺語字典的編纂工作。
Thumbnail
這是本有意思的書,主題頗不尋常,講的是編字典的人。 對現代人來,字典是稀鬆平常的東西,尤其網路很方便,所謂字典,不過是游標固定在字上面就會自動跳出來的東西,遇到不認識的字,手機拍一下也能辨識,一切都那麼自然。 但其實一點也不自然,畢竟文字本身就是理性運作之下產出的東西,來源則是同樣由理性運作構成的語
Thumbnail
才發現埋怨總是用在親近的人身上,在看到臥病在床皮包骨的您,尤其聽到您病逝消息的那刻! 成長的階段住在一起,人是親近,但心卻不算親近!重男親女是一個原因,一把捉住老重的權力卻多做出不合時宜的決定,這是我對阿嬤的印象,沒有人說的慈藹的回憶。 擔任理財顧問多年,見過很多長輩,聊過很多他人家事,自然也能感覺
Thumbnail
甚麼是Z字點子呢? 就如同書封上呈現的那樣,利用8個步驟連結成三個Z字,來激發自己的創意和點子。
Thumbnail
從9月30日起,在Naver、Kakao國(韓)語詞典中搜尋「초딩(初丁)」、「말라깽이(瘦皮猴)」、「계집(娘們)」、「머슴애(小廝)」等詞彙,都會同時標注詞彙的使用警示標語,響應韓國網路自律協會(KISO)的「認識歧視用詞」Campaign。
Thumbnail
記得從高中的階段開始,英文老師就會開始建議我們使用 "英英字典" 取代 "英漢字典" ,英文才能更進步,並逐漸練習用英文去思考。可是…… 因為,我們查一個簡單的單字,有可能在英文解釋裡面,卻用了更難更深的單字去解釋它!有時,為了查一個單字,變成要查15個單字!
Thumbnail
以前青茶在國外念書時,國外老師一直要求我們要用英文字典,當時旁邊的同學用中文小聲的說,用英漢字典都有障礙了,怎麼可能用英英字典嘛!我馬上青茶就回了一個遇見知音的眼神,當時年少輕狂的我 覺得用中文翻譯懂意思就是學習語言。本集就是告訴大家為什麼要使用原文字典,以及該如何著手。 00:00 開場
Thumbnail
日文有所謂的高低音(類似英文的重音),很像中文發聲系統的第一聲和第三聲。高低音唸反了,在日文可是會把「神」(唸「咖米」)講錯成「頭髮」(唸「卡咪」)的,所以擁有標示重音的字典是很重要的事。自從看見網友說日本知名字典網站已取消單字的重音標示,我就趕快找了其他替代的重音兼發音字典,有一家app我特中意。
Thumbnail
其實都不用買。沒有任何推薦。什麼時代了,還買字典。 上述這段話,是給有網路的人看的。至於針對沒有網路,又怕她一拿起手機就打手遊的小屁孩,我推薦朗文字典(沒有置入,也沒有廠商贊助,純推廣~)一本800左右,用一輩子。划算。 電子字典,不推。翻譯機,不推。還有什麼?大家一起上,開放問答~
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
想要讓自己學外語更輕鬆,或快速了解外文的意思,千萬別錯過這份我個人私藏的清單,強烈推薦給你!對了,就算你還不是方格子會員,現在也可以不註冊會員直接手刀入手喔!
Thumbnail
【吳守禮與他的卡片盒筆記法】 吳守禮是日治時期第一代在臺灣本土培育的高教菁英,也是戰後臺灣大學文學院少數的本省籍師資。他的專長是臺灣閩南方言的研究,並於晚年投入臺語字典的編纂工作。
Thumbnail
這是本有意思的書,主題頗不尋常,講的是編字典的人。 對現代人來,字典是稀鬆平常的東西,尤其網路很方便,所謂字典,不過是游標固定在字上面就會自動跳出來的東西,遇到不認識的字,手機拍一下也能辨識,一切都那麼自然。 但其實一點也不自然,畢竟文字本身就是理性運作之下產出的東西,來源則是同樣由理性運作構成的語
Thumbnail
才發現埋怨總是用在親近的人身上,在看到臥病在床皮包骨的您,尤其聽到您病逝消息的那刻! 成長的階段住在一起,人是親近,但心卻不算親近!重男親女是一個原因,一把捉住老重的權力卻多做出不合時宜的決定,這是我對阿嬤的印象,沒有人說的慈藹的回憶。 擔任理財顧問多年,見過很多長輩,聊過很多他人家事,自然也能感覺
Thumbnail
甚麼是Z字點子呢? 就如同書封上呈現的那樣,利用8個步驟連結成三個Z字,來激發自己的創意和點子。
Thumbnail
從9月30日起,在Naver、Kakao國(韓)語詞典中搜尋「초딩(初丁)」、「말라깽이(瘦皮猴)」、「계집(娘們)」、「머슴애(小廝)」等詞彙,都會同時標注詞彙的使用警示標語,響應韓國網路自律協會(KISO)的「認識歧視用詞」Campaign。
Thumbnail
記得從高中的階段開始,英文老師就會開始建議我們使用 "英英字典" 取代 "英漢字典" ,英文才能更進步,並逐漸練習用英文去思考。可是…… 因為,我們查一個簡單的單字,有可能在英文解釋裡面,卻用了更難更深的單字去解釋它!有時,為了查一個單字,變成要查15個單字!
Thumbnail
以前青茶在國外念書時,國外老師一直要求我們要用英文字典,當時旁邊的同學用中文小聲的說,用英漢字典都有障礙了,怎麼可能用英英字典嘛!我馬上青茶就回了一個遇見知音的眼神,當時年少輕狂的我 覺得用中文翻譯懂意思就是學習語言。本集就是告訴大家為什麼要使用原文字典,以及該如何著手。 00:00 開場
Thumbnail
日文有所謂的高低音(類似英文的重音),很像中文發聲系統的第一聲和第三聲。高低音唸反了,在日文可是會把「神」(唸「咖米」)講錯成「頭髮」(唸「卡咪」)的,所以擁有標示重音的字典是很重要的事。自從看見網友說日本知名字典網站已取消單字的重音標示,我就趕快找了其他替代的重音兼發音字典,有一家app我特中意。
Thumbnail
其實都不用買。沒有任何推薦。什麼時代了,還買字典。 上述這段話,是給有網路的人看的。至於針對沒有網路,又怕她一拿起手機就打手遊的小屁孩,我推薦朗文字典(沒有置入,也沒有廠商贊助,純推廣~)一本800左右,用一輩子。划算。 電子字典,不推。翻譯機,不推。還有什麼?大家一起上,開放問答~