愛麗絲和鮑勃有不同大小的糖果棒: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...