Skip to content

Commit 08122ae

Browse files
committed
Create 350-intersection-of-two-arrays-ii.rs
1 parent daa6e6c commit 08122ae

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

350-intersection-of-two-arrays-ii.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
pub fn intersect(nums1: Vec<i32>, nums2: Vec<i32>) -> Vec<i32> {
2+
use std::collections::HashMap;
3+
let mut mmp1 = HashMap::new();
4+
let mut mmp2 = HashMap::new();
5+
let mut ret = vec![];
6+
for num in nums1 {
7+
mmp1.entry(num).and_modify(|m|*m += 1).or_insert(1);
8+
}
9+
for num in nums2 {
10+
mmp2.entry(num).and_modify(|m|*m += 1).or_insert(1);
11+
}
12+
// println!("{:?} {:?}", mmp1, mmp2);
13+
if mmp1.len() < mmp2.len() {
14+
for (k1, v1) in mmp1 {
15+
let v2 = mmp2.get(&k1);
16+
if v2.is_some() {
17+
for _ in 0..**[v2.unwrap(), &v1].iter().min().unwrap() {
18+
ret.push(k1);
19+
}
20+
}
21+
}
22+
} else {
23+
for (k2, v2) in mmp2 {
24+
let v1 = mmp1.get(&k2);
25+
if v1.is_some() {
26+
for _ in 0..**[v1.unwrap(), &v2].iter().min().unwrap() {
27+
ret.push(k2);
28+
}
29+
}
30+
}
31+
}
32+
ret
33+
}
34+
35+
fn main() {
36+
println!("{:?}", intersect(vec![1,2,2,1], vec![2,2]));
37+
println!("{:?}", intersect(vec![4,9,5], vec![9,4,9,8,4]));
38+
}

0 commit comments

Comments
 (0)