2215.找出两数组的不同

简介: 2215.找出两数组的不同

题目:给两个下标从0开始的整数数组nums1和nums2,返回一个长度为2的列表answer,其中:

answer[0]是nums1中所有不存在于nums2中的不同整数组成的列表。

answer[1]是nums2中所有不存在于nums1中的不同整数组成的列表。

解题思路:

为了较快地判断一个数组的某个元素是否在另一个数组中存在,我们可以用哈希集合来存储数组的元素,并进行判断。具体而言,我们用哈希集合 set1

与 set2 存储数组 nums1 与 nums2 中所有不同的元素。

我们用长度为 2 的嵌套列表 res 来保存两数组中不存在于另一数组中的元素。我们首先遍历哈希集合 set1 的每个元素,判断其是否位于 set2 中,如果不在,则我们将它加入 res[0]\textit{res}[0]res[0] 中;随后我们同样地遍历哈希集合 set2 的每个元素,判断其是否位于 set1 中,如果不在,则加入 res[1] 中。这样,我们就得到了两数组中各自的不同元素。与此同时,由于哈希集合 set1 与 set2 中不存在重复元素,因此 res[0] 与 res[1] 也一定不存在重复元素。最终我们返回 res 作为答案即可。

class Solution {
    public List<List<Integer>> findDifference(int[] nums1, int[] nums2) {
        HashSet<Integer> set1 = new HashSet<>();
        HashSet<Integer> set2 = new HashSet<>();
        for (int n : nums2) {
            set2.add(n);
        }
        for (int n : nums1) {
            set1.add(n);
        }
        for (int n : nums2) {
            set1.remove(n);
        }
        for (int n : nums1) {
            set2.remove(n);
        }
 
        return List.of(List.copyOf(set1), List.copyOf(set2));
    }
}


相关文章
|
4月前
一个16位的数以4位为一组分割,然后将各部分相加获取最终结果。
一个16位的数以4位为一组分割,然后将各部分相加获取最终结果。
|
4月前
|
存储 JavaScript 算法
TypeScript算法专题 - blog4 - 单链表节点的两-两翻转(两两一组逆序)
TypeScript算法专题 - blog4 - 单链表节点的两-两翻转(两两一组逆序)
44 0
|
4月前
|
存储 算法
轮转数组问题:如何实现数组“整体逆序,内部有序”?“三步转换法”妙转数组(一)
这篇内容讲述了数组向右轮转k个位置的问题,主要分为两种解决思路。第一种是“轮转k次法”,直接在原数组上操作,每次循环k次,将数组末尾元素移到开头,时间复杂度为O(N*K),效率较低。第二种是“额外数组法”,使用额外数组存储部分元素,然后移动原数组元素,最后归还额外数组元素,时间复杂度和空间复杂度均为O(N)。文章还介绍了更高效的“三步转换法”,通过三次逆序操作实现数组轮转,分别是逆置后k个元素、逆置前n-k个元素以及整体逆置,这种方法时间复杂度为O(N)且空间复杂度为O(1)。
50 1
|
4月前
|
C语言
轮转数组问题:如何实现数组“整体逆序,内部有序”?“三步转换法”妙转数组 (二)
这是一个关于字符串处理的问题,要求将一句话中的单词顺序倒置,但保持单词内部的字符顺序不变。例如,"I like beijing." 变为 "beijing. like I"。解决方法可以分为三个步骤:分块、内部逆序和整体逆序。代码示例使用C语言实现,通过指针和while循环操作字符串数组。最终总结提到,无论先逆置哪个部分,只要确保所有部分都逆置过,结果都是相同的。
42 0
|
4月前
|
算法 测试技术 C#
【线段树 区间位运算模板】3117划分数组得到最小的值之和
【线段树 区间位运算模板】3117划分数组得到最小的值之和
|
4月前
|
存储 Python
处理随机元素来创建数列是一个涉及随机数生成和数列构造的过程
处理随机元素来创建数列是一个涉及随机数生成和数列构造的过程
40 0
|
存储 Python
Python实现划分数组为连续数字的集合
Python实现划分数组为连续数字的集合
95 0
|
存储 算法 前端开发
前端算法-除自身外数组的乘积
前端算法-除自身外数组的乘积
LeetCode 1296. 划分数组为连续数字的集合
LeetCode 1296. 划分数组为连续数字的集合
调整数组顺序使奇数位于偶数前面(简单难度)
调整数组顺序使奇数位于偶数前面(简单难度)
80 0