Giả sử chúng ta có hai mảng A và B, có ít phần tử trong mảng này. Chúng ta phải tìm ra giao điểm của chúng. Vì vậy, nếu A =[1, 4, 5, 3, 6] và B =[2, 3, 5, 7, 9], thì giao điểm sẽ là [3, 5]
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- Lấy hai mảng A và B
- nếu độ dài của A nhỏ hơn độ dài của B, thì hãy hoán đổi chúng
- tính toán tần suất của các phần tử trong mảng và lưu trữ chúng vào m
- đối với mỗi phần tử e trong B, nếu e có trong m và tần số khác 0,
- giảm tần số m [e] đi 1
- chèn e vào mảng kết quả
- trả về mảng kết quả
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
class Solution(object):
def intersect(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
m = {}
if len(nums1)<len(nums2):
nums1,nums2 = nums2,nums1
for i in nums1:
if i not in m:
m[i] = 1
else:
m[i]+=1
result = []
for i in nums2:
if i in m and m[i]:
m[i]-=1
result.append(i)
return result
ob1 = Solution()
print(ob1.intersect([1,4,5,3,6], [2,3,5,7,9])) Đầu vào
[1,4,5,3,6] [2,3,5,7,9]
Đầu ra
[3,5]