Re: [閒聊] 每日LeetCode

看板Marginalman作者 (史萊哲林的優等生)時間7月前 (2023/10/03 23:31), 7月前編輯推噓1(100)
留言1則, 1人參與, 7月前最新討論串429/719 (看更多)
※ 引述《Rushia (みけねこ的鼻屎)》之銘言: : 1512. Number of Good Pairs : 給你一個整數陣列 nums,如果 nums[i] == nums[j] 且 i < j 則 (i, j) 是一個 : Pair,求出 nums 共有幾個 Pair。 : 思路: : 1.用一個 map 記錄之前出現過的數字數量,因為 nums[i] 介於 0 到 100 所以用 : int[101]。 : 2.每一輪可以產生的 Pair 為累計先前出現過的數量,把每一輪的結果加總即可。 思路: 跟這個差不多 主要是每次出現新數字就會多N個組合所以邏輯是result+=count; count+=1; 以及學到快速使用HashMap: *nums_map.entry(num).or_insert(0) += 1; .entry(num) : 尋找key(num)-value是存在 .or_insert(0) : key(num)-value存在 就會給你value的可變引用並進行後面操作(+=1) key(num)-value不存在 則會用初始值(0)建立一對key(num)-value 並給你value的可變引用 再用這個可變引用做後面操作(+=1) Code: use std::collections::HashMap; impl Solution { pub fn num_identical_pairs(nums: Vec<i32>) -> i32 { let mut nums_map = HashMap::new(); let mut result = 0; for num in &nums { match nums_map.get(num) { Some(count) => { result += count; } None => {} } *nums_map.entry(num).or_insert(0) += 1; } result } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.249.242 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1696347118.A.94D.html ※ 編輯: yam276 (123.193.249.242 臺灣), 10/03/2023 23:33:13

10/03 23:51, 7月前 , 1F
Rust 大師
10/03 23:51, 1F
文章代碼(AID): #1b73FkbD (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1b73FkbD (Marginalman)