Rust 兩個陣列的交集 II HashMap
阿新 • • 發佈:2020-07-28
兩個陣列的交集 II
給定兩個陣列,編寫一個函式來計算它們的交集。
示例 1:
輸入:nums1 = [1,2,2,1], nums2 = [2,2] 輸出:[2,2]
示例 2:
輸入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 輸出:[4,9]
這道題的解題思路就是,把第一個陣列出現的數字當作鑰匙記錄起來,
並且記錄有幾把鑰匙,然後遍歷下一個陣列,數字當作鎖,開啟一把匹配的鎖需要消耗一個鑰匙。
然後沒有鑰匙了就打不開。最後記錄互相匹配的鑰匙和鎖。
下面是Rust程式碼
impl Solution { pub fn intersect(nums1: Vec<i32>, nums2: Vec<i32>) -> Vec<i32> { use std::collections::HashMap; let mut map:HashMap<i32,i32> = HashMap::new(); let mut vec:Vec<i32>=Vec::new(); for e in nums1.iter(){ if map.contains_key(e){ map.insert(*e, map[e]+1); }else{ map.insert(*e, 1); } } for e in nums2.iter(){ if map.contains_key(e){ if map[e] > 0 { vec.push(*e) } map.insert(*e,map[e]-1); } } return vec; } }