作者:
yam276 ('_')
2025-06-09 16:18:501679. 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
}
}