码迷,mamicode.com
首页 > 编程语言 > 详细

Rust 两个数组的交集 II HashMap

时间:2020-07-28 14:44:10      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:交集   没有   contain   contains   question   cti   imp   std   class   

 两个数组的交集 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;
    }
}

 

Rust 两个数组的交集 II HashMap

标签:交集   没有   contain   contains   question   cti   imp   std   class   

原文地址:https://www.cnblogs.com/Addoil/p/13390308.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!