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


    目录
    相关文章
    |
    2月前
    |
    存储 缓存 算法
    Java 数组
    【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
    33 4
    |
    2月前
    |
    存储 缓存 算法
    提高 Java 数组性能的方法
    【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
    33 2
    |
    2月前
    |
    存储 Java
    Java“(array) <X> Not Initialized” (数组未初始化)错误解决
    在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
    90 2
    |
    2月前
    |
    Java
    Java数组动态扩容和动态缩减
    Java数组动态扩容和动态缩减
    25 3
    |
    2月前
    |
    存储 Java 程序员
    【一步一步了解Java系列】:何为数组,何为引用类型
    【一步一步了解Java系列】:何为数组,何为引用类型
    31 1
    |
    2月前
    |
    索引
    Leetcode第三十三题(搜索旋转排序数组)
    这篇文章介绍了解决LeetCode第33题“搜索旋转排序数组”的方法,该问题要求在旋转过的升序数组中找到给定目标值的索引,如果存在则返回索引,否则返回-1,文章提供了一个时间复杂度为O(logn)的二分搜索算法实现。
    20 0
    Leetcode第三十三题(搜索旋转排序数组)
    |
    2月前
    |
    存储 算法 Java
    带你学习java的数组军队列
    带你学习java的数组军队列
    36 0
    |
    2月前
    |
    算法 C++
    Leetcode第53题(最大子数组和)
    这篇文章介绍了LeetCode第53题“最大子数组和”的动态规划解法,提供了详细的状态转移方程和C++代码实现,并讨论了其他算法如贪心、分治、改进动态规划和分块累计法。
    69 0
    |
    2月前
    |
    C++
    【LeetCode 12】349.两个数组的交集
    【LeetCode 12】349.两个数组的交集
    18 0
    |
    2月前
    |
    算法 Java
    LeetCode(一)Java
    LeetCode(一)Java