python[LeetCode]両配列の交差II

3212 ワード

2つの配列を指定し、関数を記述して交差を計算します.
例1:
入力:nums 1=[1,2,2,1]、nums 2=[2,2]出力:[2,2]
例2:
入力:nums 1=[4,9,5]、nums 2=[9,4,9,8,4]出力:[4,9]
説明:出力結果の各要素の出現回数は、要素が2つの配列に現れる回数と一致する必要があります.出力結果の順序を考慮しなくてもよい.
ステップアップ:指定された配列が順序付けされている場合は?アルゴリズムをどのように最適化しますか?nums 1のサイズがnums 2よりずっと小さい場合、どの方法が優れていますか?nums 2の要素がディスクに格納されている場合、ディスクメモリが限られており、すべての要素を一度にメモリにロードできない場合は、どうすればいいですか?
構想は2つの配列の中で小さい者を探し出して、小さい配列を遍歴します.要素が別の配列に存在する場合は、結果に追加され、別の配列から要素が削除されます.61例、52 msかかり、32%pythonを破って記録を提出
class Solution(object):
    def intersect(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: List[int]
        """
        res = []
        m = len(nums1)
        n = len(nums2)
        
        if m<=n:
            for number in nums1:
                if number in nums2:
                    res.append(number)
                    nums2.remove(number)
        else:
            for number in nums2:
                if number in nums1:
                    res.append(number)
                    nums1.remove(number)
        return res