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

Trao đổi kẹo công bằng trong Python


Hai bạn A và B có các thanh kẹo kích thước khác nhau. A[i] là kích thước thanh kẹo thứ i của A, B[j] của B. Họ muốn trao đổi một thanh kẹo sao cho sau khi trao đổi, tổng kích thước kẹo của hai bên bằng nhau. Trả về mảng ans với ans[0] là kích thước kẹo A phải cho, ans[1] là kích thước kẹo B phải cho. Nếu có nhiều đáp án, trả về một trong số đó.

Ví dụ: A = [1, 2], B = [2, 3] thì kết quả [1, 2].

Giải pháp

Các bước:

  • Tính diff = (sum(A) - sum(B)) // 2 (phép chia nguyên).
  • Chuyển B thành tập hợp (set) để tra cứu nhanh.
  • Duyệt từng i trong A: nếu i - diff có trong B thì trả về [i, i - diff].

Ví dụ

Triển khai Python:

class Solution(object): 
    def fairCandySwap(self, A, B): 
        diff = (sum(A) - sum(B))//2 
        B=set(B) 
        for i in A: 
            if i- diff in B: 
                return [i,i-diff] 
ob1 = Solution() 
print(ob1.fairCandySwap([1,2], [2,3]))

Đầu vào

[1,2] [2,3]

Đầu ra

[1,2]