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


    目录
    相关文章
    |
    30天前
    |
    存储 Java 索引
    Java快速入门之数组、方法
    ### Java快速入门之数组与方法简介 #### 一、数组 数组是一种容器,用于存储同种数据类型的多个值。定义数组时需指定数据类型,如`int[]`只能存储整数。数组的初始化分为静态和动态两种: - **静态初始化**:直接指定元素,系统自动计算长度,如`int[] arr = {1, 2, 3};` - **动态初始化**:手动指定长度,系统给定默认值,如`int[] arr = new int[3];` 数组访问通过索引完成,索引从0开始,最大索引为`数组.length - 1`。遍历数组常用`for`循环。常见操作包括求和、找最值、统计特定条件元素等。
    |
    30天前
    |
    存储 Java 索引
    Java基础(六):数组
    Java基础(六):数组
    Java基础(六):数组
    |
    28天前
    |
    存储 Java C++
    Java数组:静态初始化与动态初始化详解
    本文介绍了Java中数组的定义、特点及初始化方式。
    61 12
    |
    4月前
    |
    存储 缓存 算法
    Java 数组
    【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
    48 4
    |
    4月前
    |
    存储 缓存 算法
    提高 Java 数组性能的方法
    【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
    61 2
    |
    4月前
    |
    存储 Java
    Java“(array) <X> Not Initialized” (数组未初始化)错误解决
    在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
    127 2
    |
    4月前
    |
    存储 算法 Java
    带你学习java的数组军队列
    带你学习java的数组军队列
    48 0
    |
    2天前
    |
    Java 程序员 开发者
    Java社招面试题:一个线程运行时发生异常会怎样?
    大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
    35 14
    |
    5天前
    |
    安全 Java 程序员
    Java 面试必问!线程构造方法和静态块的执行线程到底是谁?
    大家好,我是小米。今天聊聊Java多线程面试题:线程类的构造方法和静态块是由哪个线程调用的?构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节有助于掌握Java多线程机制。下期再见! 简介: 本文通过一个常见的Java多线程面试题,详细讲解了线程类的构造方法和静态块是由哪个线程调用的。构造方法由创建线程实例的主线程调用,静态块在类加载时由主线程调用。理解这些细节对掌握Java多线程编程至关重要。
    34 13
    |
    6天前
    |
    安全 Java 开发者
    【JAVA】封装多线程原理
    Java 中的多线程封装旨在简化使用、提高安全性和增强可维护性。通过抽象和隐藏底层细节,提供简洁接口。常见封装方式包括基于 Runnable 和 Callable 接口的任务封装,以及线程池的封装。Runnable 适用于无返回值任务,Callable 支持有返回值任务。线程池(如 ExecutorService)则用于管理和复用线程,减少性能开销。示例代码展示了如何实现这些封装,使多线程编程更加高效和安全。