|
1 | 1 | class Solution {
|
2 | 2 | public int[] intersect(int[] nums1, int[] nums2) {
|
3 |
| - HashMap<Integer, Integer> hm = new HashMap<>(); |
4 |
| - ArrayList<Integer> intersection = new ArrayList<>(); |
| 3 | + if (nums1 == null || nums2 == null) { |
| 4 | + return new int[0]; |
| 5 | + } |
5 | 6 |
|
6 |
| - for (int i = 0; i < nums1.length; i++) { |
7 |
| - hm.put(nums1[i], hm.getOrDefault(nums1[i], 0) + 1); |
| 7 | + if (nums2.length > nums1.length) { |
| 8 | + return intersect(nums2, nums1); |
8 | 9 | }
|
9 | 10 |
|
10 |
| - for (int i = 0; i < nums2.length; i++) { |
11 |
| - int freq = hm.getOrDefault(nums2[i], 0); |
12 |
| - if (freq > 0) { |
13 |
| - intersection.add(nums2[i]); |
14 |
| - hm.put(nums2[i], --freq); |
| 11 | + Map<Integer, Integer> map = new HashMap<>(); |
| 12 | + List<Integer> result = new ArrayList<>(); |
| 13 | + |
| 14 | + for (int num : nums2) { |
| 15 | + map.put(num, map.getOrDefault(num, 0) + 1); |
| 16 | + } |
| 17 | + |
| 18 | + for (int num : nums1) { |
| 19 | + int frequency = map.getOrDefault(num, 0); |
| 20 | + |
| 21 | + if (frequency > 0) { |
| 22 | + result.add(num); |
| 23 | + map.put(num, frequency - 1); |
15 | 24 | }
|
16 | 25 | }
|
17 | 26 |
|
18 |
| - int[] result = new int[intersection.size()]; |
19 |
| - int idx = 0; |
20 |
| - for (int commonVal : intersection) { |
21 |
| - result[idx++] = commonVal; |
| 27 | + int[] arr = new int[result.size()]; |
| 28 | + for (int i = 0; i < arr.length; i++) { |
| 29 | + arr[i] = result.get(i); |
22 | 30 | }
|
23 | 31 |
|
24 |
| - return result; |
| 32 | + return arr; |
25 | 33 | }
|
26 | 34 | }
|
0 commit comments