首页 > 其他分享 >leetcode-350-两个数组的交集 II 题解

leetcode-350-两个数组的交集 II 题解

时间:2023-04-26 23:06:32浏览次数:38  
标签:题解 List len II result 350 n2 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]

说明:

输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。 我们可以不考虑输出结果的顺序。 进阶:

如果给定的数组已经排好序呢?你将如何优化你的算法? 如果 nums1 的大小比 nums2 小很多,哪种方法更优? 如果 nums2 的元素存储在磁盘上,内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解 1

class Solution:
    def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
        result = []
        for i2, n2 in enumerate(nums2):
            for i1, n1 in enumerate(nums1):
                if n1 == n2:
                    result.append(n2)
                    nums1.pop(i1)
                    break
       return result          

题解2

class Solution:
    def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
        result = []
        len_num1 = len(nums1)
        len_num2 = len(nums2)
        if len_num1 >= len_num2:
            for i2, n2 in enumerate(nums2):
                for i1, n1 in enumerate(nums1):
                    if n1 == n2:
                        result.append(n2)
                        nums1.pop(i1)
                        break
        else:
            for i1, n1 in enumerate(nums1):
                for i2, n2 in enumerate(nums2):
                    if n1 == n2:
                        result.append(n2)
                        nums2.pop(i2)
                        break
        return result  

标签:题解,List,len,II,result,350,n2,nums1,nums2
From: https://blog.51cto.com/spaceack/6229018

相关文章

  • 2022CCPC威海站 铜牌题解 A C D E G I J 补题
    A//木桶效应#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=2e5+10;map<string,int>cham;pair<string,int>player[N];intcnt1[6];intcnt2[6];intn,m;intsum;signedmain(){cin>>n;f......
  • JOISC2016 题解
    仍然是没有做通信题。JOISC2016Day1Matryoshka俄罗斯套娃转化错了,转化成上升子序列了,然后就变成了区间LIS。实际上是LDS,那么就可以直接做了。https://qoj.ac/submission/99648JOISC2016Day1Memory2神经衰弱我们对数进行两两配对,然后把每一对都问出来。如果不存在相......
  • 安装35042068补丁
    环境:OS:Centos8DB:19.3.0.0 1.解压[root@slnngksoft]#unzipp35042068_190000_Linux-x86-64.zip 2.修改目录权限[root@slnngksoft]#chown-Roracle:oinstall./patch/ 3.检查[oracle@slnngk35042068]$/u01/app/oracle/product/19.3.0.0/db_1/OPatch/opatchpre......
  • GLIBCXX_3.4.20 not found 问题解决【Unable to load shared library 'lib**.so'】
    前因:问题:在调用别人的so时,出现了如下问题【GLIBCXX_3.4.20notfound】Unabletoloadsharedlibrary'libdbc.so'oroneofitsdependencies.Inordertohelpdiagnoseloadingproblems,considersettingtheLD_DEBUGenvironmentvariable:/lib64/libstdc++.so.6:v......
  • 【剑指 Offer】 59 - II. 队列的最大值
    【题目】请定义一个队列并实现函数max_value得到队列里的最大值,要求函数max_value、push_back和pop_front的均摊时间复杂度都是O(1)。若队列为空,pop_front和max_value需要返回-1示例1:输入:["MaxQueue","push_back","push_back","max_value","pop_front","max_va......
  • 剑指 Offer II 017. 含有所有字符的最短字符串
    题目链接:剑指OfferII017.含有所有字符的最短字符串方法:同向双指针解题思路基本思路:统计\(t\)字符串中每个字符的个数,然后使用双指针遍历字符串\(s\),当窗口覆盖\(t\)中所有字符时,开始缩短左指针到可以到达的最右侧,取窗口最小的字符串为答案;需要考虑的问题:什么情况......
  • ABC267G Increasing K Times 题解
    做这道题,很有感悟,发篇文。先给数列从小到大排个序。接下来设\(f_{i,j}\)表示前\(i\)个数的排列形成\(j\)个上坡的方案数。接下来考虑转移,分为插入第\(i\)个数后增加上坡和不增加上坡两种情况。对于不增加的情况,有三种可能:第\(i\)个数插入在了数列的最前端,有\(1\)......
  • 2021牛客OI赛前集训营-提高组(第二场)第三题 树数树题解
    题目描述牛牛有一棵\(n\)个点的有根树,根为\(1\)。我们称一个长度为\(m\)的序列\(a\)是好的,当且仅当:\(\foralli\in(1,m]\),\(a_i\)为\(a_{i−1}\)的祖先或\(a_{i−1}\)是\(ai\)的祖先\(\forall1\leqi\ltj\leqm,a_i\neqa_j\)你需要帮助牛牛求出最长的......
  • 2021牛客OI赛前集训营-提高组(第三场) 第二题 交替 题解与结论证明
    题目描述一个长度为\(n\)的数组\(A\),每秒都会变成一个长度为\(n−1\)新数组\(A'\),其变化规则如下:若当前数组\(A\)的长度\(n\)为偶数,则对于新数组\(A'\)的每一个位置\(i(1≤i<n)\)来说,\(A'[i]=A[i]+A[i+1]\)若当前数组\(A\)的长度\(n\)为奇数,则对于......
  • 【SD集训】20230425 T2 差(difference) 题解 CF1500F 【Cupboards Jumps】
    大家可以猜猜看为什么有两个标题,因为这个原因本文就不设密码了,被He_ren的原题创到了。吐槽一下,He_ren甚至出原题还用脚造数据,虽然数据确实比较难造。不过那两个\(O(n^2)\)老哥好像都没最后将所有数调整成非负,遗憾20。有人场切*3500却没过签到题,我不说是谁。题目描述......