https://leetcode.com/problems/intersection-of-two-arrays-ii/
你會得到兩組數列num1、num2 ,請回傳兩組數列的交集
一開始有想到兩種解法
第一種是先比較兩者的長度,之後把短的那組數列出現的數字對對看長的那組有沒有出現,有的話就把它記錄起來並從廠的那組數列刪掉
class Solution:
def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
if len(nums1) > len(nums2):
nums1, nums2 = nums2, nums1
ans = []
for i in nums1:
if i in set(nums2):
n = nums2.pop(nums2.index(i))
ans.append(n)
return ans
第二種是先把兩組數列都排序,排完後從兩組數列的第一個數字同時比較:
class Solution:
def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
nums1.sort()
nums2.sort()
ptr1 = 0
ptr2 = 0
ans = []
while ptr1 != len(nums1) and ptr2 != len(nums2):
if nums1[ptr1] > nums2[ptr2]:
ptr2 += 1
elif nums1[ptr1] < nums2[ptr2]:
ptr1 += 1
else:
ans.append(nums1[ptr1])
ptr1 += 1
ptr2 += 1
return ans
今天題目是簡單題目,在discussion有很多蠻有趣的解法
我的解法都只是基本中的基本