akcmthdkunのブログ

雑多なメモ

2215. Find the Difference of Two Arrays

解法イメージ

    sol1
    nums1をループ。nums2に含まれるかチェック。含まれなければ最終リストにappend
    これをnums2にもやる
    時間計算量o(n^2)

    sol2
    nums1,2をsetに入れてuniqueを作る。
    nums1に対してループ。set2に含まれるかチェックしてなければ最終リストにappend。
    これをnums2に対してもやる。
    時間計算量o(len(nums1)+len(nums2))
    ※setに対してループを回せば重複分の判定が不要になる。

コード

class Solution:
    def findDifference(self, nums1: List[int], nums2: List[int]) -> List[List[int]]:
        set1=set(nums1)
        set2=set(nums2)

        ans1=[]
        ans2=[]

        for i in set1:
            if i not in set2:
                ans1.append(i)
        
        for i in set2:
            if i not in set1:
                ans2.append(i)

        return [ans1,ans2]

改善案

  • pythonのsetは集合の差分が取れるのでそれを使うと早い
class Solution:
    def findDifference(self, nums1: List[int], nums2: List[int]) -> List[List[int]]:
        set1 = set(nums1)
        set2 = set(nums2)
        n1 = list(set1-set2)
        n2 = list(set2-set1)
        return [n1,n2]