Computer >> Máy Tính >  >> Lập trình >> Python

Giao điểm của hai mảng II trong Python

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]