找到两个数组中的公共元素

leetcode 2956 https://leetcode.cn/problems/find-common-elements-between-two-arrays/
一次遍历实现

class Solution:
    def findIntersectionValues(self, nums1: List[int], nums2: List[int]) -> List[int]:
        arr = [0] * 110
        for n in nums1:
            arr[n] +=1
        a1 = 0
        a2 = 0
        for n in nums2:
            if arr[n] !=0:
                if arr[n] !=-1:
                    a1 += arr[n]
                a2+=1
                arr[n] = -1
        return [a1,a2]

一次遍历的方法什么原理呢?
先用数组arry,记录nums1中所有元素出现的次数,其实就是类似哈希表
然后遍历nums2
如果这个元素n做下标时,在数组arry中对应的值不为0,代表这个值nums1中也出现了,
a1 += array[n],a2++,但是如果另一个nums2中的元素也为n,这时候a1就不能再+=arry[n]了,因为已经加过了,a2还是要++
所以在判断array[n] !=0 成立时,还要再把array[n] 设为特值-1,多一个判断。

posted @   博客是个啥?  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示