用 Python 实现公平的糖果交换

pythonserver side programmingprogramming更新于 2025/11/2 5:32:17

假设 A 和 B 是两个朋友。他们有不同大小的糖果。这里 A[i] 是 A 拥有的第 i 块糖果的大小,B[j] 是 B 拥有的第 j 块糖果的大小。

由于他们是朋友,他们想每人交换一块糖果,这样交换后 A 和 B 的糖果总量相同。(一个人拥有的糖果总量是他们拥有的糖果大小的总和。)我们必须返回一个整数数组,假设为 ans,其中 ans[0] 是 A 必须交换的糖果的大小,ans[1] 是 B 必须交换的糖果的大小。如果有多个答案,我们将仅返回其中一个。

例如,如果 A = [1, 2] 且 B = [2, 3],则输出将为 [1, 2]

要解决此问题,我们将遵循以下步骤 −

  • 取 A 和 B 之和的差,然后除以 2,并将整数部分放入 diff
  • 将 B 转换为集合
  • for i in A
    • 如果 i – diff in B,则返回 [i, i – diff]

示例

让我们看看下面的实现以便更好地理解 −

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

输入

[1,2]
[2,3]

输出

[1,2]

相关文章


有用资源