【Python3】【力扣题】349. 两个数组的交集

【力扣题】题目描述:

【Python3】代码:

1、解题思路:集合的交集。两个数组都转为集合,获取集合的交集。

知识点:set(...):转为集合,集合的元素不重复。

              集合1.intersection(集合2):获取两个集合都有的元素,即两集合的交集。也可以:集合1 & 集合2。

              list(...):转为列表。

class Solution:def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:res = set(nums1) & set(nums2)return list(res)# 或者res = set(nums1).intersection(set(nums2))return list(res)

2、解题思路:遍历数组,依次判断元素是否在另一个数组中,用新列表记录两个数组都有的元素。

知识点:集合推导式:用简洁的方法创建集合,集合中的元素不能重复。{ 对元素的简单操作 for 变量 in 可迭代对象 if 条件 }

              列表推导式:用简洁的方法创建列表,列表中的元素可以重复。[ 对元素的简单操作 for 变量 in 可迭代对象 if 条件 ]

class Solution:def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:aset = set(nums1)res = {x for x in nums2 if x in aset}return list(res)# 或者aset, bset = set(nums1), set(nums2)return [x for x in bset if x in aset]

也可遍历长度短的数组,以提升一点速度。

class Solution:def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:aset = set(nums1)bset = set(nums2)return self.set_intersection(aset,bset)def set_intersection(self,set1,set2):if len(set1) > len(set2):return self.set_intersection(set2,set1)return [x for x in set1 if x in set2]

注解:集合推导式、列表推导式

# 集合推导式
res = {x for x in nums2 if x in aset}
# 相当于:
res = set()
for x in nums2:if x in aset:res.append(x)
print(res)# 列表推导式
res = [x for x in bset if x in aset]
# 相当于:
res = []
for x in bset:if x in aset:res.append(x)
print(res)

3、解题思路:排序+双指针。将两数组都排序,依次比较两数组中的元素大小。若相同,则用新列表记录;若不同,则较小数字的指针往后移,继续比较,直到两数组所有元素比较结束。

知识点:列表.sort():在原列表基础上,将元素按从小到大排序。

              len(列表):获取列表长度,即列表中有多少元素。

              列表.append(...):往列表尾部添加元素。

class Solution:def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:res = []nums1.sort()nums2.sort()len_1, len_2 = len(nums1), len(nums2)index_1, index_2 = 0, 0while index_1 < len_1 and index_2 < len_2 :val_1 = nums1[index_1]val_2 = nums2[index_2]if val_1 == val_2 and val_1 not in res:res.append(val_1)index_1 += 1index_2 += 1elif val_1 < val_2:index_1 += 1else:index_2 += 1return res

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ZYNQ_project:lcd_pic_400x400

在lcd液晶屏上显示400x400像素的图片&#xff0c; 像素信息通过电脑的串口调试助手&#xff0c;发送给fpga&#xff0c;存储在例化的双端口ram中&#xff0c; 在要显示图像区域&#xff0c;读取ram中的像素信息。 模块框图&#xff1a; 时序图&#xff1a; 代码&#xff1a;…

Windows下搭建Tomcat HTTP服务,发布公网远程访问

文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 前言 Tomcat作为一个轻量级的服务器&#xff0c;不仅名字很有趣&#xff0…

C语言——数组转换

将的两行三列数组转换为三行两列的数组 #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int a[2][3]{{1,2,3},{4,5,6}};int b[3][2],i,j;for ( i 0; i <1; i){for ( j 0; j <2; j){printf("%5d",a[i][j]);b[j][i]a[i][j];}printf(&…

LTD253次升级 | 官网“活动“增报名 • 名片展示个人简介 • 合伙人设置个性邀请码

1、活动类型支持报名&#xff1b; 2、产品详情页支持房产类型产品的地图显示&#xff1b; 3、官微名片独立版支持个人简介&#xff1b; 4、多语言系统支持挪威语&#xff1b; 5、极速官微首页提速、合伙人页面优化&#xff1b; 6、 已知问题优化与修复&#xff1b; 01网站编辑器…

Mysql8.1.0 安装问题-缺少visual studio 2019x64组件

缺少visual studio x64组件的问题 使用Mysql8以上的安装包mysql-8.1.0-winx64.msi进行安装&#xff0c; 提示缺少visual studio 2019 x64可再发行组件 在微软官网下载vc可再发行程序包 Microsoft Visual C 可再发行程序包最新支持的下载 在Visual Studio 2015、2017、2019 和…

Arch Linux 安装 dwm 窗口管理器

窗口管理器是管理桌面上各种窗口的组件&#xff0c;主要功能有&#xff1a;窗口堆叠方式&#xff0c;窗口移动规则等。大多数人接触到的是堆叠式窗口管理器&#xff0c;一个窗口可以叠放在其他窗口之上&#xff0c;调整窗口的主要方式是鼠标。而dwm&#xff08;Dynamic Window …

【C++】异常处理 ① ( 异常概念引入 | 抛出异常语法 | 捕获异常语法 | 异常捕获流程 | 异常处理代码示例 )

文章目录 一、异常处理1、异常概念引入2、抛出异常语法3、捕获异常语法4、异常捕获流程 二、异常处理代码示例1、错误代码示例 - 抛出异常 / 不捕获异常2、正确代码示例 - 抛出异常 / 捕获异常3、正确代码示例 - 抛出异常 / 捕获异常不处理继续抛出异常 一、异常处理 1、异常概…

端口隔离度

端口隔离度 隔离度为&#xff08;本振或射频信号&#xff09;泄漏到其他端口的功率与输入功率之比&#xff0c;单位是dB。 比如 RF to LO Isolation 表示 射频输入信号的功率 与 泄漏到LO端口的功率 之比。 而 LO to RF Isolation 则表示 本振输入信号的功率 与 泄漏到RF端口的…

Cytoscape学习教程

写在前面 今天分享的内容是自己遇到问题后,咨询社群里面的同学,帮忙解决的总结。 关于Cytoscape,对于做组学或生物信息学的同学基本是陌生的,可能有的同学用这个软件作图是非常溜的,做出来的网络图也是十分的好看,“可玩性”很高,就像前面分享的aPEAR包一样aPEAR包绘制…

List操作的一些常见问题

文章目录 阿里巴巴开发手册强制规约&#xff1a;1. Arrays.asList转换基本类型数组2. Arrays.asList返回的List不支持增删操作3. 对原始数组的修改会影响到我们获得的那个List4. ArrayList.subList强转ArrayList导致异常5. ArrayList中的subList切片造成OOM6.Copy-On-Write 是什…

C语言——从键盘输人一个表示年份的整数,判断该年份是否为闰年,并显示判断结果。

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int year 0;printf("请输入年份&#xff1a;");scanf("%d",&year);if((year%4 0) && (year%100!0) || (year%400 0)){printf("%d是闰年\n",year);}else{p…

QML Label 属性 pyside6

基本属性 text: 显示的文本内容 Label {text: "Hello, World!" }color: 文本颜色 Label {color: "blue" }font: 字体设置&#xff0c;包括 family、pointSize、weight 和 style Label {font.family: "Arial"font.pointSize: 20font.bold: tr…

set与map

set与map 一、序列式容器与关联式容器二、pair1、键值对2、作用3、构造函数4、make_pair&#xff08;1&#xff09;构造函数&#xff08;2&#xff09;作用 5、代码6、运行结果 三、set1、概念2、代码3、运行结果4、说明 四、multiset1、与set的关系2、代码3、运行结果 五、map…

【新手解答1】深入探索 C 语言:变量名、形参 + 主调函数、被调函数 + 类和对象 + 源文件(.c 文件)、头文件(.h 文件)+ 库

C语言的相关问题解答 写在最前面目录 问题1变量名与变量的关系与区别变量和数据类型形参&#xff08;形式参数&#xff09;的概念 问题2解析&#xff1a;主调函数和被调函数延伸解析&#xff1a;主调函数对于多文件程序的理解总结 问题3类和对象变量和数据类型变量是否为抽象的…

ArcGIS中基于人口数据计算人口密度的方法

文章目录 一、密度分析原理二、点密度分析三、线密度分析四、核密度分析一、密度分析原理 密度分析是指根据输入的要素数据集计算整个区域的数据聚集状况,从而产生一个联系的密度表面。通过密度计算,将每个采样点的值散步到整个研究区域,并获得输出栅格中每个像元的密度值。…

嵌入式八股 | 校招秋招 | 笔试面试 | 精选题目

欢迎关注微信公众号【赛博二哈】获取八股PDF 并加入嵌入式求职交流群。提供简历模板、学习路线、岗位整理等 欢迎加入知识星球【嵌入式求职星球】获取完整嵌入式八股。 提供简历修改、项目推荐、求职规划答疑。另有各城市、公司岗位、笔面难题、offer选择、薪资爆料等 嵌入式…

分布式数据恢复-hbase+hive分布式存储误删除如何恢复数据?

hbasehive分布式存储数据恢复环境&#xff1a; 16台某品牌R730XD服务器节点&#xff0c;每台物理服务器节点上有数台虚拟机&#xff0c;虚拟机上配置的分布式&#xff0c;上层部署hbase数据库hive数据仓库。 hbasehive分布式存储故障&初检&#xff1a; 数据库文件被误删除…

十八、初识elasticsearsh (索引)

目录 一、Elasticsearch的介绍&#xff1a; 二、正向索引和倒排索引 1、正向索引 2、倒排索引 3、索引(index) :相同类型的文档的集合 4、映射(mapping):索引中文档的字段约束信息&#xff0c;类似表的结构约束 一、Elasticsearch的介绍&#xff1a; Elasticsearch是一个…

企业数字化转型的作用是什么?_光点科技

在当今快速变化的商业环境中&#xff0c;数字化转型已成为企业发展的重要策略。企业数字化转型指的是利用数字技术改造传统业务模式和管理方式&#xff0c;以提升效率、增强竞争力和创造新的增长机会。 提升运营效率&#xff1a;数字化转型通过引入自动化工具和智能系统&#x…

JVM——产生内存溢出原因

目录 1.产生内存溢出原因一 &#xff1a;代码中的内存泄漏1.案例1&#xff1a;equals()和hashCode()导致的内存泄漏问题&#xff1a;**正常情况**&#xff1a;**异常情况&#xff1a;**解决方案&#xff1a; 2.案例2&#xff1a;内部类引用外部类问题&#xff1a;解决方案&…