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を破って記録を提出
例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