Leetcode 349 Intersection of Two Arrays

Given two integer arrays nums1 and nums2, return an array of their intersection. Each element in the result must be unique and you may return the result in any order.

Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2]
Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [9,4]
Explanation: [4,9] is also accepted.
  • Soruda bize iki liste veriliyor ve bu listelerdeki ortak sayıları bulmamız isteniyor.
  • Döndüğümüz sonuç içerisinde aynı sayıdan sadece 1 tane olmalı.
  • Bunun için elimizdeki küçük listeyi bir set listesine atarız.Bu sayede tekrar eden sayılardan kurtulmuş oluruz.
  • Daha sonra uzun listede dolaşarak içindeki sayıları ararız.Bulduğumuz sayıyı sonuca atar set içerisinden çıkarırız.
class Solution:
    def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
        if len(nums1) > len(nums2):
            return self.intersection(nums2,nums1)
        
        lookup = set()
        for i in nums1:
            lookup.add(i)
        
        result = []
        for i in nums2:
            if i in lookup:
                result.append(i)
                lookup.discard(i)
        return result