1679. Max Number of K-Sum Pairs
題目:
給你一堆牌抽鬼牌
抽到合計 k 的可以拔掉
看能湊幾對
思路:
用雙指標要先排序變成O(n log n) 很痛苦
所以用 HashMap
而且我本來 for 掃兩遍
但後來發現這一題可以邊做邊蒐集
不是需要先蒐集滿的題目
可以只用一個 for 解完
:O
Code:
use std::collections::{hash_map::Entry, HashMap};
impl Solution {
pub fn max_operations(nums: Vec<i32>, k: i32) -> i32 {
let mut counts = HashMap::new();
let mut count = 0;
for num in nums {
match counts.entry(k - num) {
Entry::Occupied(mut e) => {
*e.get_mut() -= 1;
if *e.get_mut() == 0 {
e.remove_entry();
}
count += 1;
}
Entry::Vacant(_) => {
*counts.entry(num).or_insert(0) += 1;
}
}
}
count
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.143.163 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1749457132.A.C11.html
※ 編輯: yam276 (60.248.143.163 臺灣), 06/09/2025 17:12:29