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]