LeetCode2215找出两数组的不同

news2025/1/19 20:44:20

题目描述

  给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,请你返回一个长度为 2 的列表 answer ,其中:answer[0] 是 nums1 中所有 不 存在于 nums2 中的 不同 整数组成的列表。answer[1] 是 nums2 中所有 不 存在于 nums1 中的 不同 整数组成的列表。注意:列表中的整数可以按 任意 顺序返回。

解析

  正常解法就是用两个set去存储然后相互找满足条件的元素,手动循环比使用removeAll快一点。

public List<List<Integer>> findDifference(int[] nums1, int[] nums2) {
        List<List<Integer>> res = new ArrayList<>();
        List<Integer> temp1 = new ArrayList<>();
        List<Integer> temp2 = new ArrayList<>();
        Set<Integer> set1 = new HashSet<>();
        Set<Integer> set2 = new HashSet<>();
        for(int n : nums1) {
            set1.add(n);
        }
        for(int n : nums2) {
            set2.add(n);
        }
        for(int s : set1) {
            if(!set2.contains(s)){
                temp1.add(s);
            }
        }
        res.add(temp1);
        for(int s : set2) {
            if(!set1.contains(s)){
                temp2.add(s);
            }
        }
        res.add(temp2);
        return res;
    }

在这里插入图片描述

  然后就是巧妙的解法了,由于提示中有说明输入的-1000 <= nums1[i], nums2[i] <= 1000,且1 <= nums1.length, nums2.length <= 1000,那么说明nums中的元素最大值最小值之差最多2000,因此可以定义一个2000长度的数组来记录每个元素出现的次数。

public List<List<Integer>> findDifference(int[] nums1, int[] nums2) {
        List<List<Integer>> resultList = new ArrayList<>();
        List<Integer> list1 = new ArrayList<>();
        List<Integer> list2 = new ArrayList<>();
        int[] common = new int[2001];
        for (int i : nums1) {
            common[i + 1000] = 1;
        }
        for (int i : nums2) {
            if (common[i + 1000] == 0) {
                list2.add(i);
            }
            common[i + 1000]++;
        }
        for (int i : nums1) {
            if (common[i + 1000] == 1) {
                list1.add(i);
            }
            common[i + 1000]++;
        }
        resultList.add(list1);
        resultList.add(list2);
        return resultList;
    }

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1674222.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kafka基础架构详解

Kafka基础架构 Kafka概述 1. Producer&#xff08;生产者&#xff09;&#xff1a; 生产者是向 Kafka broker 发送消息的客户端。它负责将消息发布到指定的主题&#xff08;Topic&#xff09;&#xff0c;并可以选择将消息发送到特定的分区&#xff08;Partition&#xff09…

vwmare虚拟机迁移磁盘方法

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文整理 虚拟机迁移磁盘的方法 简单方便快上手 当前目标 当前迁移文件: 当前位置&#xff1a; 目的地: e盘虚拟机文件夹 迁移到当前目录。 实际操作 先打开虚拟机的设置&#xff0c;找到这个虚拟机当前的位置…

手机微信备份:防止数据丢失的明智之举

我们通过微信聊天、支付、购物等方式与他人进行交流和互动&#xff0c;而这些聊天记录和文件也成为了我们重要的数据资源。为了防止数据丢失给我们带来的不便和损失&#xff0c;手机微信备份成为了一项非常重要的任务。本文将为您介绍如何有效地备份手机微信数据&#xff0c;确…

windows和 Linux 下通过 QProcess 打开ssh 和vnc

文章目录 SSHSSH验证启动SSH一、口令登录二、公钥登录通过Qprocess 启动ssh VNC Viewer简介通过QProcess启动vncViewer SSH Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的**安全网络协议**。它是专为远程登录会话(**甚至可以…

centos7安装zabbix-server

zabbixan-server安装 环境安装zabbix安装zabbix配置apachezabbix-UI前端配置修改zabbix为中文语言 环境 准备&#xff1a; centos7系统、mysql数据库/MariaDB数据库 mysql数据库可参照&#xff1a;https://blog.csdn.net/weixin_61367575/article/details/138774428?spm1001.…

网站设计模板简单又好看

在互联网时代&#xff0c;每个企业都需要拥有一个好看又具有吸引力的网站。一个简单却又好看的网站设计模板可以为企业带来许多好处。本文将探讨一些如何设计一个简单又好看的网站模板的技巧。 首先&#xff0c;一个好的网站设计模板应该具备简洁明了的布局。简单的布局能够使用…

有哪些值得买的开放式耳机推荐?2024年开放式运动耳机选购指南

开放式耳机因其独特设计&#xff0c;能在一定程度上保护听力。相较于传统封闭式耳机&#xff0c;开放式设计允许周围环境声音自然流入耳内&#xff0c;降低了耳内共振和声压&#xff0c;减少了耳道的不适感&#xff0c;从而减轻了对听力的潜在损害。对于追求音质与听力保护并重…

项目经理之路:裁员与内卷下的生存策略

作为一名项目经理&#xff0c;身处这个充满挑战与机遇的行业中&#xff0c;今年所面临的裁员潮和内卷化趋势无疑给我的工作带来了前所未有的压力。然而&#xff0c;正是这些压力和挑战&#xff0c;让我们更加深刻地思考了在这个快速变化的时代中&#xff0c;我们项目经理应该如…

【SolidWorks】在零件表面写字、改大小、旋转字的方法

博主在使用SolidWorks建模过程中需要在零件表面写字&#xff0c;并且改变字的大小&#xff0c;必要的时候还要旋转字体&#xff0c;这里就将写字、改字大小、旋转字的方法分享给大家。 1、准备工作。选择要写字的面&#xff0c;并新建草图&#xff0c;在草图模式下编辑。 2、写…

以大开放促进大开发 | 陕西粮农集团携手开源网安引领新时代西部大开发

​5月13日&#xff0c;开源网安与陕西粮农集团成功签署战略合作协议。双方将在网络安全保障体系建设及人才培养领域展开深度合作&#xff0c;共同筑牢陕西省数字经济建设安全屏障。陕西省粮农信息技术有限公司总经理解玮峰、陕西省粮农信息技术有限公司安全事业部负责人马德君、…

银河麒麟V10桌面版分区分析

前言&#xff1a;本文只讨论gpt分区uefi引导形式 &#xff0c;了解分区方案的目的是方便恢复&#xff0c;还原&#xff0c;扩容等&#xff0c;普通用户使用无需了解这些细节。 先回顾分析windows和ubuntu默认分区用做对比 1、windows11默认分区 win11分区&#xff0c;如上图&am…

Linux - make与makefile

文章目录 什么是make和makefile如何使用依赖关系 和 依赖方法伪目标 写个程序-进度条换行和回车的区别 什么是make和makefile make是一个命令 makefile是一个文件 这就是make和makefile的本质 make和 ll , pwd ,su 一样都是命令 makefile和 test &#xff0c; test.c 一样都是…

内存卡惊现0字节!数据丢失怎么办?

在日常使用电子设备的过程中&#xff0c;有时我们会遇到一个令人困惑的问题——内存卡突然变成了0字节。这意味着原本存储在内存卡中的数据似乎在一夜之间消失得无影无踪&#xff0c;给用户带来极大的困扰。本文将详细解析内存卡0字节现象&#xff0c;探究其原因&#xff0c;并…

prompt工程策略(一:使用 CO-STAR 框架来搭建 prompt 的结构)

原文&#xff1a;我是如何赢得GPT-4提示工程大赛冠军的 为了让 LLM 给出最优响应&#xff0c;为 prompt 设置有效的结构至关重要。CO-STAR 框架是一种可以方便用于设计 prompt 结构的模板。该模板考虑了会影响 LLM 响应的有效性和相关性的方方面面&#xff0c;从而有助于得到更…

波卡 2024 一季度报告:XCM 创下历史新高,JAM 链将引领 Polkadot 2.0 新风向

作者&#xff1a;Nicholas Garcia&#xff5c;Messari 研究分析师 编译&#xff1a;OneBlock 原文&#xff1a;https://messari.io/report/state-of-polkadot-q1-2024 近期&#xff0c;Messari Crypto 发布了 Polkadot 2024 年 Q1 状况的数据报告。OneBlock 为你梳理了本篇报…

[自动化]pyautogui的使用

目录 环境 包的版本 前置知识 鼠标控制函数 屏幕与鼠标位置 size() position() OnScreen() 鼠标移动 moveTo() move() 鼠标拖动 dragTo() drag() mouseDown()按下鼠标 mouseUp()松开鼠标 鼠标滚动 scroll() 键盘控制函数 write() press() keyDown()和keyU…

用友系统-U9企业版存在任意文件上传漏洞(新接口)-漏洞挖掘

0x01 产品简介 用友系统-U9 cloud是基于最新应用平台&#xff0c;全新系统架构及开发技术&#xff0c;适配安可要求&#xff0c;融合生态发展&#xff0c;开放标准数据服务接口&#xff0c;并与用友系统-U9 cloud系列产品无缝融合应用&#xff0c;打造场景化、数据化工作驱动的…

简单易懂的 Postman 在线测试方法

在现代软件开发的生命周期中&#xff0c;API 测试扮演着一个不可或缺的角色。Postman 是一个普遍被使用的工具&#xff0c;它可以帮助开发者快速有效地进行接口测试。以下内容是关于如何使用 Postman 的详细指南。 下载并安装 Postman 最初的步骤是安装 Postman 到你的电脑。…

TongWeb8 脚本录制功能

应用场景 在TongWeb8的命令行使用过程中&#xff0c;为简化从手册查找命令行参数的过程&#xff0c;增加了脚本录功能。录制您在控制台上所进行的操作过程&#xff0c;并可在一个新的环境回放这些操作&#xff0c;以提高业务系统的部署效率。录制的脚本文件类型包括 commandsto…

C++复习 -- 引用

引用概念: 引用变量是一个别名&#xff0c;也就是说&#xff0c;它是某个已存在变量的另一个名字。 一旦把引用初始化为某个变量&#xff0c;就可以使用该引用名称或变量名称来指向变量。 思维发散: 在C语言中&#xff0c;一个数据对应一个内存&#xff0c;通过由一个变量名来访…