给定两个数组,编写一个函数来计算它们的交集。

    示例 1:
    输入:nums1 = [1,2,2,1], nums2 = [2,2]
    输出:[2,2]
    示例 2:
    输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
    输出:[4,9]

    说明:
    输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。
    我们可以不考虑输出结果的顺序。

    1. public int[] intersect(int[] nums1, int[] nums2) {
    2. if (nums1.length > nums2.length) {
    3. return intersect(nums2, nums1);
    4. }
    5. Map<Integer, Integer> map = new HashMap<Integer, Integer>();
    6. for (int num : nums1) {
    7. int count = map.getOrDefault(num, 0) + 1;
    8. map.put(num, count);
    9. }
    10. int[] intersection = new int[nums1.length];
    11. int index = 0;
    12. for (int num : nums2) {
    13. int count = map.getOrDefault(num, 0);
    14. if (count > 0) {
    15. intersection[index++] = num;
    16. count--;
    17. if (count > 0) {
    18. map.put(num, count);
    19. } else {
    20. map.remove(num);
    21. }
    22. }
    23. }
    24. return Arrays.copyOfRange(intersection, 0, index);
    25. }
    26. 作者:LeetCode-Solution
    27. 链接:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/solution/liang-ge-shu-zu-de-jiao-ji-ii-by-leetcode-solution/
    28. 来源:力扣(LeetCode
    29. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。