Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Giao của hai mảng II trong Python


Cho hai mảng A, B. Tìm giao của chúng (phần tử chung, tính cả số lần xuất hiện). Ví dụ: A = [1,4,5,3,6], B = [2,3,5,7,9] → [3,5].

Giải pháp

Các bước:

  • Nếu len(A) < len(B) thì hoán đổi.
  • Tính tần suất phần tử trong mảng lớn hơn lưu vào m.
  • Duyệt B: nếu phần tử có trong m và tần suất > 0, giảm tần suất, thêm vào kết quả.
  • Trả về kết quả.

Ví dụ

Triển khai Python:

class Solution(object): 
    def intersect(self, nums1, nums2): 
        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]