350. 两个数组的交集 II --力扣 --JAVA

简介: 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。

 题目

给你两个整数数组 nums1nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。

解题思路

    1. 对两个数组进行排序整理;
    2. 从索引0开始对数组进行遍历,创建List来存储相同的数据;
    3. 元素相等则添加到List中并且索引都右移一位;
    4. 元素不相等则小的索引右移大的不变。

    代码展示

    class Solution {
        public int[] intersect(int[] nums1, int[] nums2) {
            Arrays.sort(nums1);
            Arrays.sort(nums2);
            int index1 = 0;
            int index2 = 0;
            int n = nums1.length;
            int m = nums2.length;
            List<Integer> data = new ArrayList<>();
            while (index1 < n && index2 < m){
                if(nums1[index1] == nums2[index2]){
                    data.add(nums1[index1]);
                    index1++;
                    index2++;
                } else if(nums1[index1] > nums2[index2]){
                    index2++;
                } else {
                    index1++;
                }
            }
            int[] ans = new int[data.size()];
            for (int i = 0; i < data.size(); i++){
                ans[i] = data.get(i);
            }
            return ans;
        }
    }

    image.gif


    目录
    相关文章
    |
    3月前
    |
    存储 缓存 算法
    Java 数组
    【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
    41 4
    |
    3月前
    |
    存储 缓存 算法
    提高 Java 数组性能的方法
    【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
    50 2
    |
    3月前
    |
    存储 Java
    Java“(array) <X> Not Initialized” (数组未初始化)错误解决
    在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
    110 2
    |
    3月前
    |
    Java
    Java数组动态扩容和动态缩减
    Java数组动态扩容和动态缩减
    31 3
    |
    3月前
    |
    存储 算法 Java
    带你学习java的数组军队列
    带你学习java的数组军队列
    44 0
    |
    4月前
    |
    Unix Shell Linux
    LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
    本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
    LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
    |
    5月前
    |
    Python
    【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
    本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
    67 6
    |
    5月前
    |
    搜索推荐 索引 Python
    【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
    本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
    136 2
    |
    2月前
    |
    机器学习/深度学习 人工智能 自然语言处理
    280页PDF,全方位评估OpenAI o1,Leetcode刷题准确率竟这么高
    【10月更文挑战第24天】近年来,OpenAI的o1模型在大型语言模型(LLMs)中脱颖而出,展现出卓越的推理能力和知识整合能力。基于Transformer架构,o1模型采用了链式思维和强化学习等先进技术,显著提升了其在编程竞赛、医学影像报告生成、数学问题解决、自然语言推理和芯片设计等领域的表现。本文将全面评估o1模型的性能及其对AI研究和应用的潜在影响。
    61 1
    |
    4月前
    |
    数据采集 负载均衡 安全
    LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
    本文提供了多个多线程编程问题的解决方案,包括设计有限阻塞队列、多线程网页爬虫、红绿灯路口等,每个问题都给出了至少一种实现方法,涵盖了互斥锁、条件变量、信号量等线程同步机制的使用。
    LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口