1. 程式人生 > 實用技巧 >Rust 兩個陣列的交集 II HashMap

Rust 兩個陣列的交集 II HashMap

兩個陣列的交集 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;
    }
}