LeetCode题库第888题 公平的糖果棒交换
生活随笔
收集整理的這篇文章主要介紹了
LeetCode题库第888题 公平的糖果棒交换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
LeetCode題庫第888題 公平的糖果棒交換
LeetCode第888道題 公平的糖果棒交換
首先,題目中說他們兩個人的糖果的總數量是不一樣的,并且要將A中的一個糖果和B的一個糖果交換后使得他們兩個人的糖果的總數量相等。由此,交換糖果的目的是使得兩個人的糖果的總數量相等,而要用A的那一個糖果和B中的那一個糖果交換是和他們兩個糖果的總數量之差是相關的,例如:如果A的糖果的總數量比B的糖果的總重量多2,那么,就需要用A中重量為n的糖果來交換B中重量為n-1的糖果,注意:不是交換B中重量為n-2的糖果,因為:假如用A中的2交換B中的1,A的總重量減少了1,而B的糖果總重量是增加了1。
解題的思路是:
- 將A和B的糖果的總數量分別算出來
- 求出它們的糖果總數量之差
- 根據A的糖果總數和B的糖果總數的大小關系來遍歷A或B,在遍歷的過程中根據當前糖果大小和糖果總數之差在另一個人的糖果列表中尋找滿足條件的糖果
- 注意返回的是列表,其中的兩個元素都是糖果的大小且它們是有順序關系的,第一個元素是愛麗絲必須交換的糖果棒的大小,第二個元素是Bob必須交換的糖果棒的大小。題目說如果有多個答案,你可以返回其中的任何一個,且保證答案存在。
學了Python,用Python3也實現了一下,大家可以參考一下:
class Solution:def fairCandySwap(self, A: List[int], B: List[int]) -> List[int]:space = abs(sum(A)-sum(B))if sum(A)>sum(B):for i in A:if i-space/2 in B:return [i, i-space//2]else:for i in B:if i-space/2 in A:return [i-space//2, i]return []總結
以上是生活随笔為你收集整理的LeetCode题库第888题 公平的糖果棒交换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: i5 3450处理器能搭配2133内存吗
- 下一篇: 内存条价格飙升,电脑硬件爱好者的困境