zoukankan      html  css  js  c++  java
  • 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;
        }
    }
    
  • 相关阅读:
    集训队作业2018人类的本质
    推式子小技巧
    [Codeforces671D]Roads in Yusland
    线性规划的对偶问题
    数学虐哭空巢老人记
    Voronoi图与Delaunay三角剖分
    [ZJOI2018]保镖
    [SPOJ2939]Qtree5
    数据结构虐哭空巢老人记
    [CTSC2006]歌唱王国
  • 原文地址:https://www.cnblogs.com/Addoil/p/13390308.html
Copyright © 2011-2022 走看看