// 方法1
public static int[] intersection(int[] nums1, int[] nums2) {
if (nums1 == null || nums1.length == 0
|| nums2 == null || nums2.length == 0) {
return new int[]{};
}
List<Integer> integerNum1 = new ArrayList<>();
Map<Integer, Integer> integers = new HashMap<>();
for (int num : nums1) {
if (!integerNum1.contains(num))
integerNum1.add(num);
}
for (int num : nums2) {
if (integerNum1.contains(num)) {
integers.put(num, 1);
}
}
int[] res = new int[integers.size()];
int index = 0;
for (Map.Entry entry : integers.entrySet()) {
res[index++] = (int)entry.getKey();
}
return res;
}
// 方法2
public static int[] intersection(int[] nums1, int[] nums2) {
if (nums1 == null || nums1.length == 0
|| nums2 == null || nums2.length == 0) {
return new int[]{};
}
Set<Integer> integerSet = new HashSet<>();
for (int num : nums1) {
integerSet.add(num);
}
int[] res = new int[nums2.length];
int index = 0;
for (int num : nums2) {
if (integerSet.contains(num)) {
res[index++] = num;
integerSet.remove(num);
}
}
return Arrays.copyOf(res, index);
}
// 测试用例
public static void main(String[] args) {
int[] nums1 = new int[]{1, 2, 2, 1}, nums2 = new int[]{2, 2};
int[] ans = intersection(nums1, nums2);
System.out.println("Intersection demo01 result:");
for (int res : ans) {
System.out.print(res + " ");
}
System.out.println();
nums1 = new int[]{4, 9, 5};
nums2 = new int[]{9, 4, 9, 8, 4};
ans = intersection(nums1, nums2);
System.out.println("Intersection demo02 result:");
for (int res : ans) {
System.out.print(res + " ");
}
System.out.println();
}
leetcode 350: 两个数组的交集II
https://www.cnblogs.com/fyusac/p/13292985.html