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

職業生涯起航

透過完成課程獲得認證

開始
廣告