• 350. 两个数组的交集 II (Java)


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

    示例 1:

    输入:nums1 = [1,2,2,1], nums2 = [2,2]
    输出:[2,2]
    示例 2:

    输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
    输出:[4,9]
     

    说明:

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

    如果给定的数组已经排好序呢?你将如何优化你的算法?
    如果 nums1 的大小比 nums2 小很多,哪种方法更优?
    如果 nums2 的元素存储在磁盘上,磁盘内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?

    思路:两个数组未排序 => 使用HashMap查找

    class Solution {
        public int[] intersect(int[] nums1, int[] nums2) {
            target = new HashMap<>();
            List<Integer> resultList = new ArrayList<Integer>();
            if(nums1.length < nums2.length) {
                insertMap(nums1);
                findIntersect(nums2, resultList);
            } else {
                insertMap(nums2);
                findIntersect(nums1, resultList);
            }
            int[] arr = new int[resultList.size()];
            for(int i = 0; i < resultList.size(); i++){
                arr[i] = resultList.get(i);
            }
            return arr;
        }
    
        private void insertMap(int[] nums){ //短的数组放入HashMap
            for (int i = 0; i < nums.length; i++){
                if(target.containsKey(nums[i])){
                    target.put(nums[i], target.get(nums[i])+1);
                } else {
                    target.put(nums[i], 1);
                }
            }
        }
    
        private void findIntersect(int[] nums, List<Integer> resultList){
            for(int i = 0; i < nums.length; i++){
                if(target.containsKey(nums[i]) && target.get(nums[i]) > 0){
                    resultList.add(nums[i]);
                    target.put(nums[i], target.get(nums[i])-1);
                }
            }
        } 
    
        private Map<Integer, Integer> target;
    }
  • 相关阅读:
    Hive函数大全
    SparkSQL与Hive on Spark
    Hadoop安装—— WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platf
    centos7配置防火墙
    hive使用
    SPOOL 命令使用实例【oracle导出纯文本格式文件】
    IP 跟踪
    chinaunix---linux教程
    Python语言获取目录下所有文件
    m
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/13296546.html
Copyright © 2020-2023  润新知