首页 > 其他分享 >350. 两个数组的交集 II

350. 两个数组的交集 II

时间:2023-10-19 20:56:24浏览次数:37  
标签:指向 交集 元素 II int 数组 350 nums1 nums2

目录

题目

  • 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2,2]

示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[4,9]

法一、排序+双指针

  • 思路:将两个数组进行排序,随后用两个指针分别指向第一个元素,
    当i指向的nums1值小于j指向的nums2值时,i向后移一位;
    当i指向的nums1值等于j指向的nums2值时,把i指向的nums1的值加入输出数组r,并且i,j 都向后移一位;
    当i指向的nums1值大于j指向的nums2值时,j向后移一位;
    最后,输出保存的数组r
class Solution:
    def intersect(self, nums1: [int], nums2: [int]) -> [int]:
        nums1.sort()
        nums2.sort()
        r = []
        i, j = 0, 0
        while i < len(nums1) and j < len(nums2):#以较小的数组长度为结束条件
            if nums1[i] < nums2[j]:
                i += 1
            elif nums1[i] == nums2[j]:
                r.append(nums1[i])
                i += 1
                j += 1    
            else:
                j += 1
        return r

法二、网友一行解法

class Solution:
    def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
        return list((Counter(nums1) & Counter(nums2)).elements())
  • Counter(nums1)和Counter(nums2)分别用于创建nums1和nums2的计数器对象。计数器对象是一种字典(dictionary)的子类,它将列表中的元素作为键,出现的次数作为对应的值。
  • & 运算符用于对两个计数器对象进行交集操作,得到一个新的计数器对象,其中包含了两个列表中共同出现的元素及其出现次数。
  • elements() 方法返回一个迭代器,用于按照元素的重复次数逐个输出元素。这里使用 list() 函数将迭代器转换为一个列表,以得到最终的结果列表。

标签:指向,交集,元素,II,int,数组,350,nums1,nums2
From: https://www.cnblogs.com/lushuang55/p/17775616.html

相关文章

  • RAII
    RAII(ResourceAcquisitionIsInitialization)翻译过来就是资源获取即初始化,更准确的表达是使用对象来管理资源。单纯依靠new和delete的期望执行是行不通的,甚至有时会有隐藏new的资源(比如函数返回的资源)。因此我们寄希望于析构函数自动调用的机制来确保资源释放。对于局部作用域......
  • LeetCode142. 环形链表 II
    题目描述给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如......
  • 代码训练营第八天(Python)| 344.反转字符串、541. 反转字符串II、05.替换空格、151.翻转
    344.反转字符串双指针法时间复杂度为:O(n),空间复杂度为:O(1)classSolution:defreverseString(self,s:List[str])->None:"""Donotreturnanything,modifysin-placeinstead."""left,right=0,len(s......
  • ACS系列(6) ACS QT版SPiiPlusClibraryDemo
    工程文件QT+=coreguigreaterThan(QT_MAJOR_VERSION,4):QT+=widgetsCONFIG+=c++17#YoucanmakeyourcodefailtocompileifitusesdeprecatedAPIs.#Inordertodoso,uncommentthefollowingline.#DEFINES+=QT_DISABLE_DEPRECATED_BEFORE=0x......
  • CF350E Wrong Floyd
    什么一眼构造题首先要卡Floyd的关键就是存在某两个点\(x,y\),满足这两个点之间的所有最短路经过的点中(除\(x,y\)本身)至少有一个非关键点因此很容易想到如下构造法,先随便找一个关键点\(K\),然后把所有非关键点和\(K\)连边(当然如果所有点都是关键点就显然无解)接下来先随便连边保证......
  • [vue]精宏技术部试用期学习笔记 II
    精宏技术部试用期学习笔记(vue)router:vue的模拟路由前置准备安装vue-routerpnpmivue-router@4//安装版本4的vue-router可以在package.json文件中查看依赖"dependencies":{"vue":"^3.3.4","vue-router":"4"//这里},新建文件夹/src......
  • 代码随想训练营第四天(Python)| 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点
    两两交换链表中的节点关键点:涉及到头节点变动的都使用虚拟节点。画图找出交换节点指向的顺序和退出循环的条件。1、迭代法classSolution:defswapPairs(self,head:Optional[ListNode])->Optional[ListNode]:dummy_node=ListNode(next=head)cur=......
  • 260. 只出现一次的数字 III
    1.题目介绍2.题解2.1快排+遍历思路同本系列前几题一样代码classSolution{public:std::vector<int>singleNumber(std::vector<int>&nums){intcount=0;std::vector<int>arr;std::sort(nums.begin(),nums.end());for......
  • PowerShell IDE - PowerShellPlus(4)- IIS X功能介绍
    IIS管理功能,根据安装版本不同X显示主版本号。比如我的是IIS7,则是IIS7.互联网信息服务(英语:InternetInformationServices,简称IIS),是由微软公司提供的基于运行MicrosoftWindows的互联网基本服务。最初是WindowsNT版本的可选包,随后自带在Windows2000、WindowsXPProfessional和Wind......
  • 代码随想训练营第五天(Python)| 242.有效的字母异位词、349. 两个数组的交集、第202题.
    242.有效的字母异位词1、数组法这个思路贼6,在这个题的效率也高classSolution:defisAnagram(self,s:str,t:str)->bool:#全部转为asii码如果是互为异为词,则最后的-+后的结果为0record=[0]*26#范围是26。一维foriins......