陣列入門題 數有幾個好配對 Number of Good Pairs_Leetcode #1512

閱讀時間約 2 分鐘
raw-image

這題的題目在這裡:

題目敘述

題目會給定我們一個輸入陣列,要求我們計算好配對的數目有多少個?

好配對的定義: 兩個數字相同,但是陣列索引一個在前,一個在後。
nums[i] == nums[j] and i < j.
這樣 (i, j) 就稱為一組好配對。


測試範例

Example 1:

Input: nums = [1,2,3,1,1,3]
Output: 4
Explanation: There are 4 good pairs (0,3), (0,4), (3,4), (2,5) 0-indexed.

Example 2:

Input: nums = [1,1,1,1]
Output: 6
Explanation: Each pair in the array are good.

Example 3:

Input: nums = [1,2,3]
Output: 0

約束條件

Constraints:

  • 1 <= nums.length <= 100
  • 1 <= nums[i] <= 100

演算法

除了第一直覺,雙層迴圈直接去模擬good pair的生成並且計數以外;這題還有一個高效率的排列組合作法。

對任何一個給定數字num,假如出現k次,那與num有關的good pair數目其實就等於C(k, 2) = C k 取 2 = k * (k-1) / 2

因為任選兩個不同位置的num,都構成一個good pair

所以,只要先做一個字典,統計每個數字的出現次數。

接著,針對每個數字,由C(k, 2)的組合公式計算good pair數目,並且加總,就是最後答案。


程式碼

class Solution:
 def numIdenticalPairs(self, nums: List[int]) -> int:
  
  occurrence = Counter( nums )

  pair = 0
  for num, occ in occurrence.items():
   pair += occ * (occ-1) // 2

  return pair

複雜度分析

時間複雜度:

O( n ) 建造字典掃描數字耗費O(n),掃描字典內的數字也耗費O(n)。

空間複雜度:

O( n ) 字典大小最大和陣列一樣長,所佔用空間為O(n)。


關鍵知識點

觀察並且模擬幾個小範例,可以發現good pair背後的原理其實就是n個物品,任選兩個的方法數,可以由排列組合公式計算得到答案。


Reference:

[1] Python sol by iteration - Number of Good Pairs - LeetCode

82會員
420內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
題目會給定我們一個陣列和參數k,要求我們將陣列右旋k次,然後輸出內容。 例如[1,2,3,4,5] 右旋 2次,輸出就是[4,5,1,2,3]
題目會給定我們一個陣列,要求我們找出裡面統計最多出現次數的偶數 。 假如有兩個偶數出現的次數一樣多,取最數字比較小的那個最為答案。
題目會給定我們一個陣列,陣列長度為n。 要求我們找出裡面出現次數超過 n / 3次的數字。
題目會給定我們一個輸入陣列,裡面的字母A和字母B分別代表兩種顏色的卡片。 假如某張卡片的左右都是相同的,例如AAA,Alice可以抽掉中間那張A。 同樣的,假如某張卡片的左右都是相同的,例如BBB,Bob可以抽掉中間那張B。 請問Alice和Bob輪流玩抽卡遊戲, 請問最後是誰贏?
題目給定一個已排序的輸入陣列,陣列裡面的數字自分別代表每篇論文的被引用數。 要求我們計算h-index。 h-index的定義: 找一個最大的h值,使得有h篇論文,個別論文的被引用數都 大於等於 h
題目給定一個輸入陣列,陣列裡面的數字自分別代表每篇論文的被引用數。 要求我們計算h-index。 h-index的定義: 找一個最大的h值,使得有h篇論文,個別論文的被引用數都 大於等於 h
題目會給定我們一個陣列和參數k,要求我們將陣列右旋k次,然後輸出內容。 例如[1,2,3,4,5] 右旋 2次,輸出就是[4,5,1,2,3]
題目會給定我們一個陣列,要求我們找出裡面統計最多出現次數的偶數 。 假如有兩個偶數出現的次數一樣多,取最數字比較小的那個最為答案。
題目會給定我們一個陣列,陣列長度為n。 要求我們找出裡面出現次數超過 n / 3次的數字。
題目會給定我們一個輸入陣列,裡面的字母A和字母B分別代表兩種顏色的卡片。 假如某張卡片的左右都是相同的,例如AAA,Alice可以抽掉中間那張A。 同樣的,假如某張卡片的左右都是相同的,例如BBB,Bob可以抽掉中間那張B。 請問Alice和Bob輪流玩抽卡遊戲, 請問最後是誰贏?
題目給定一個已排序的輸入陣列,陣列裡面的數字自分別代表每篇論文的被引用數。 要求我們計算h-index。 h-index的定義: 找一個最大的h值,使得有h篇論文,個別論文的被引用數都 大於等於 h
題目給定一個輸入陣列,陣列裡面的數字自分別代表每篇論文的被引用數。 要求我們計算h-index。 h-index的定義: 找一個最大的h值,使得有h篇論文,個別論文的被引用數都 大於等於 h
你可能也想看
Google News 追蹤
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
👨‍💻簡介 陣列就像是一個儲存相同類型資料的容器,你可以想像成裝滿了一樣東西的盒子,每個東西都叫做陣列元素。這種類型可以是基本的,像是整數或字串,也可以是你自己定義的型別。不過陣列有個限制,就是大小一旦確定就無法改變。在Go語言裡,陣列的長度也是型別的一部分。
Thumbnail
我們人生中所有吸引來的人、事、物都跟我們的振動頻率息息相關,如果我們可以在我們人生中遇到各種決擇的時候,有更好的選項可以做為方案,提高振動頻率就是宇宙送給我們最棒的禮物。因為,只要我們不斷的提升振動,更多更好更棒的選擇,便是由我們自己創造了。
Thumbnail
這幾天FB一直推播振光大直熄燈跳樓大特價的廣告給我,我檢舉一個又來一個。原本這種東西我用膝蓋想都知道100%是詐騙,就算有收到東西也不會是正版的模型。
Thumbnail
莫瑞泰斯皇家美術館積極邀請大家「交出你的珍珠耳環少女!」,提供自己受到《戴著珍珠耳環的少女》啟發的作品,任何形式、任何媒材,通通都可以!
Thumbnail
隨著奧斯卡的落幕, 這一巴掌響出天際成為熱門題材, 成為大家爭相討論模仿的話題, 但其實這背後也帶出許多的議題討論 2022年第94屆奧斯卡頒獎典禮上,喜劇演員—克里斯洛克(Chris Rock) 在舞台上大開威爾史密斯(Will Smith)的妻子 便衝上台給了克里斯一個響亮的巴掌,
Thumbnail
圖片 台灣的政府為了在新冠肺炎的衝擊下,刺激經濟和消費,推出了振興五倍劵的政策,期望能夠提振經濟的復甦。 關於即將發下的五倍劵,你想好怎麼運用了嗎?各商家配合這樣的政策也紛紛推出了相對應的優惠活動!大家還不把握機會~ 我的個人部落格→YC TALK (yctalkspace.blogspot.co
Thumbnail
平日都睡很晚的我,今天早上為了搶前四百萬名數位綁定才有的好食券難得早起,不到九點就把讀卡機啥的準備好,連官網及銀行的連結都先連好,免得活動開始,連網頁都點不進去。
Thumbnail
歐美反女權主義者常揶揄男性擁女主義者「遲早都會變性侵犯」。一方面是女權圈內真的有一部分人是為了用男性擁女主義者的標籤卸下女生心防好對女生下手,好比:哈維.溫斯坦 但也有的人是因為一些稀奇古怪的原因被生理女的女權主義誣告性侵(想紅、爭風吃醋、友誼破裂、腦洞),只能說...Metoo真是好標籤
Thumbnail
儲蓄險、基金、股票、房地產 選擇權、虛擬貨幣、資金盤 (HYIP) 美股、黃金、外匯、期貨、CMS 上述站長都接觸過了,賠了500多萬 如果這短文能拯救更多朋友 500萬絕對值得
Thumbnail
投資年齡來到9歲 正巧遇到10年大關 看著越來越多"老師"被打臉 站長也一直在實現損益 希望這次退潮 站長不要是裸體的那個 😂
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
👨‍💻簡介 陣列就像是一個儲存相同類型資料的容器,你可以想像成裝滿了一樣東西的盒子,每個東西都叫做陣列元素。這種類型可以是基本的,像是整數或字串,也可以是你自己定義的型別。不過陣列有個限制,就是大小一旦確定就無法改變。在Go語言裡,陣列的長度也是型別的一部分。
Thumbnail
我們人生中所有吸引來的人、事、物都跟我們的振動頻率息息相關,如果我們可以在我們人生中遇到各種決擇的時候,有更好的選項可以做為方案,提高振動頻率就是宇宙送給我們最棒的禮物。因為,只要我們不斷的提升振動,更多更好更棒的選擇,便是由我們自己創造了。
Thumbnail
這幾天FB一直推播振光大直熄燈跳樓大特價的廣告給我,我檢舉一個又來一個。原本這種東西我用膝蓋想都知道100%是詐騙,就算有收到東西也不會是正版的模型。
Thumbnail
莫瑞泰斯皇家美術館積極邀請大家「交出你的珍珠耳環少女!」,提供自己受到《戴著珍珠耳環的少女》啟發的作品,任何形式、任何媒材,通通都可以!
Thumbnail
隨著奧斯卡的落幕, 這一巴掌響出天際成為熱門題材, 成為大家爭相討論模仿的話題, 但其實這背後也帶出許多的議題討論 2022年第94屆奧斯卡頒獎典禮上,喜劇演員—克里斯洛克(Chris Rock) 在舞台上大開威爾史密斯(Will Smith)的妻子 便衝上台給了克里斯一個響亮的巴掌,
Thumbnail
圖片 台灣的政府為了在新冠肺炎的衝擊下,刺激經濟和消費,推出了振興五倍劵的政策,期望能夠提振經濟的復甦。 關於即將發下的五倍劵,你想好怎麼運用了嗎?各商家配合這樣的政策也紛紛推出了相對應的優惠活動!大家還不把握機會~ 我的個人部落格→YC TALK (yctalkspace.blogspot.co
Thumbnail
平日都睡很晚的我,今天早上為了搶前四百萬名數位綁定才有的好食券難得早起,不到九點就把讀卡機啥的準備好,連官網及銀行的連結都先連好,免得活動開始,連網頁都點不進去。
Thumbnail
歐美反女權主義者常揶揄男性擁女主義者「遲早都會變性侵犯」。一方面是女權圈內真的有一部分人是為了用男性擁女主義者的標籤卸下女生心防好對女生下手,好比:哈維.溫斯坦 但也有的人是因為一些稀奇古怪的原因被生理女的女權主義誣告性侵(想紅、爭風吃醋、友誼破裂、腦洞),只能說...Metoo真是好標籤
Thumbnail
儲蓄險、基金、股票、房地產 選擇權、虛擬貨幣、資金盤 (HYIP) 美股、黃金、外匯、期貨、CMS 上述站長都接觸過了,賠了500多萬 如果這短文能拯救更多朋友 500萬絕對值得
Thumbnail
投資年齡來到9歲 正巧遇到10年大關 看著越來越多"老師"被打臉 站長也一直在實現損益 希望這次退潮 站長不要是裸體的那個 😂