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

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

Giả sử A và B là hai người bạn. Họ có những thanh kẹo với nhiều kích cỡ khác nhau. Ở đây A [i] là kích thước của thanh kẹo thứ i thuộc sở hữu của A và B [j] là kích thước của thanh kẹo thứ j thuộc sở hữu của B.

Vì là bạn nên họ muốn đổi mỗi người một thanh kẹo để sau khi đổi cả A và B đều có tổng số kẹo bằng nhau. (Tổng số kẹo mà một người có là tổng kích thước của các thanh kẹo mà họ có.) Chúng ta phải trả về một mảng số nguyên, giả sử ans, trong đó ans [0] là kích thước của thanh kẹo mà A phải đổi, và ans [1] là kích thước của thanh kẹo mà B phải đổi. Nếu có nhiều câu trả lời, chúng tôi sẽ chỉ trả lại một trong số chúng.

Ví dụ:nếu A =[1, 2] và B =[2, 3], thì đầu ra sẽ là [1, 2]

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Lấy hiệu giữa tổng của A và tổng của B, sau đó chia nó cho 2 và lấy phần nguyên thành diff
  • chuyển đổi B thành một tập hợp
  • cho tôi trong A
    • nếu i - diff in B, thì trả về [i, i - diff]

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 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]