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]