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; } }
相关推荐
zhangxiafll 2020-11-13
svap 2020-11-09
viplinux 2020-10-28
Justhavefun 2020-10-22
lousir 2020-10-21
longzhiwen 2020-10-16
Justhavefun 2020-09-25
归去来兮 2020-09-18
zhouxiaojie 2020-09-16
gamedevd 2020-09-04
tkernel 2020-09-03
Trustport 2020-09-01
svap 2020-08-25
tkernel 2020-08-18
lihn 2020-08-18
TianlangStudio 2020-07-18
iammjun 2020-07-07
Colourful 2020-07-03
与您共享 2020-06-17