• [LeetCode] 350. 两个数组的交集 II


    一开始的想法是:用一个map来存储长度较长的数组中的所有数字,再与较短的数组中的数字比较,若出现在较长数组中,则map中的数量减一,最后用原始map与比较结束后的map比较,得到重复的数字有哪些。

    答案的解法:

    用一个数组来存储比较的结果:

    class Solution {
        public int[] intersect(int[] nums1, int[] nums2) {
            // 将长度短的数组换到前面。
            if (nums1.length > nums2.length) {
                return intersect(nums2, nums1);
            }
            // 创建 HashMap 记录 nums1 中每个元素出现的次数。
            Map<Integer, Integer> map = new HashMap<Integer, Integer>();
            for (int num : nums1) {
                int count = map.getOrDefault(num, 0) + 1;
                map.put(num, count);
            }
            int[] ans = new int[nums1.length];
            int index = 0;
            // 遍历数组 nums2 中元素,在 HashMap 中个数大于 0 则记录。
            for (int num : nums2) {
                int count = map.getOrDefault(num, 0);
                if (count > 0) {
                    ans[index++] = num;
                    count--;
                    if (count > 0) {
                        map.put(num, count);
                    } else {
                        map.remove(num);
                    }
                }
            }
            // 遍历完成返回重复元素长度的结果数组。
            return Arrays.copyOfRange(ans, 0, index);
        }
    }
    
    作者:iceblood
    链接:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/solution/350ti-liang-ge-shu-zu-de-jiao-ji-ii-by-iceblood/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    zabbix客户端自动注册
    运维监控篇(2)_Zabbix简单的性能调优
    Zabbix unreachable poller processes more than 75% busy
    RabbitMQ 内存控制 硬盘控制
    RabbitMQ的Q&A
    RabbitMQ性能优化
    消息默认的属性
    RabbitMQ的Vhost,Exchange,Queue原理分析
    逻辑运算符(&& || and or)
    面向对象
  • 原文地址:https://www.cnblogs.com/doyi111/p/13358966.html
Copyright © 2020-2023  润新知