找到兩個陣列中的公共元素

博客是个啥?發表於2024-07-16

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,多一個判斷。

相關文章