Python 中的公平糖果交换


假设 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 为集合
  • 对于 A 中的 i
    • 如果 i – diff 在 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]

更新于: 2020 年 4 月 28 日

阅读次数:416

职业生涯起航

通过完成课程获得认证

开始
广告