leetcode 888 公平的糖果棒交換

2021-10-18 14:35:56 字數 1679 閱讀 9178

愛麗絲和鮑勃有不同大小的糖果棒:a[i] 是愛麗絲擁有的第 i 根糖果棒的大小,b[j] 是鮑勃擁有的第 j 根糖果棒的大小。

因為他們是朋友,所以他們想交換一根糖果棒,這樣交換後,他們都有相同的糖果總量。(乙個人擁有的糖果總量是他們擁有的糖果棒大小的總和。)

返回乙個整數陣列 ans,其中 ans[0] 是愛麗絲必須交換的糖果棒的大小,ans[1] 是 bob 必須交換的糖果棒的大小。

如果有多個答案,你可以返回其中任何乙個。保證答案存在。

示例 1:

輸入:a = [1,1], b = [2,2]

輸出:[1,2]

示例 2:

輸入:a = [1,2], b = [2,3]

輸出:[1,2]

示例 3:

輸入:a = [2], b = [1,3]

輸出:[2,3]

示例 4:

輸入:a = [1,2,5], b = [2,4]

輸出:[5,4]

1 <= a.length <= 10000

1 <= b.length <= 10000

1 <= a[i] <= 100000

1 <= b[i] <= 100000

保證愛麗絲與鮑勃的糖果總量不同。

答案肯定存在。

知道a與b之間的差異即可,因為給東西是雙方交換,所以是2個差異,那麼這個差異,只要從a或者b裡找到乙個糖果將其加在一起,且能在另乙個人裡找到即可, 即:

b - a = 2 * difference

那麼 ,b - difference = a + difference

class solution:

def faircandyswap(self, a: list, b: list) -> list:

difference = (sum(b) - sum(a)) // 2

sb = set(b)

# b - a = 2 * difference

# b - difference = a + difference

for a in a:

if difference + a in sb:

return [a, difference + a]

if __name__ == '__main__':

s = solution()

a = [1, 2, 5]

b = [2, 4]

ans = s.faircandyswap(a, b)

print(ans)

LeetCode 888 公平的糖果交換

leetcode習題答案彙總 題目 愛麗絲和鮑勃有不同大小的糖果棒 a i 是愛麗絲擁有的第 i 塊糖的大小,b j 是鮑勃擁有的第 j 塊糖的大小。因為他們是朋友,所以他們想交換乙個糖果棒,這樣交換後,他們都有相同的糖果總量。乙個人擁有的糖果總量是他們擁有的糖果棒大小的總和。返回乙個整數陣列 an...

Leetcode 888 公平的糖果棒交換

三 總結 愛麗絲和鮑勃有不同大小的糖果棒 a i 是愛麗絲擁有的第 i 根糖果棒的大小,b j 是鮑勃擁有的第 j 根糖果棒的大小。因為他們是朋友,所以他們想交換一根糖果棒,這樣交換後,他們都有相同的糖果總量。乙個人擁有的糖果總量是他們擁有的糖果棒大小的總和。返回乙個整數陣列 ans,其中 ans ...

leetcode 888 公平的糖果棒交換

888.公平的糖果棒交換 愛麗絲和鮑勃有不同大小的糖果棒 a i 是愛麗絲擁有的第i根糖果棒的大小,b j 是鮑勃擁有的第j根糖果棒的大小。因為他們是朋友,所以他們想交換一根糖果棒,這樣交換後,他們都有相同的糖果總量。乙個人擁有的糖果總量是他們擁有的糖果棒大小的總和。返回乙個整數陣列ans,其中an...