350. intersection of two arrays ii

Given two arrays, write a function to compute their intersection.

Example 1:

1
2
Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2,2]

Example 2:

1
2
Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [4,9]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class  {
public int[] intersect(int[] nums1, int[] nums2) {
List<Integer> list = new ArrayList<>();
int[] nums = null;
if (nums1 == null || nums2 == null || nums1.length == 0 || nums2.length == 0) {
nums = new int[0];
return nums;
}
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums1.length; i++) {
if (map.containsKey(nums1[i])) {
Integer val = map.get(nums1[i]);
map.put(nums1[i], val + 1);
} else {
map.put(nums1[i], 1);
}
}

for (int i = 0; i < nums2.length; i++) {
if (map.containsKey(nums2[i])) {
list.add(nums2[i]);
Integer val = map.get(nums2[i]);
if (val - 1 <= 0) {
map.remove(nums2[i]);
} else {
map.put(nums2[i], val - 1);
}
}
}

int size = list.size();
nums = new int[size];
for (int i = 0; i < size; i++) {
nums[i] = list.get(i);
}
return nums;

}
}