สมมุติว่า A และ B เป็นเพื่อนกัน พวกเขามีลูกกวาดขนาดต่างๆ โดยที่ A[i] คือขนาดของแท่งที่ i ของขนมที่ A เป็นเจ้าของ และ B[j] คือขนาดของแท่งที่ j ของขนมที่ B เป็นเจ้าของ
เนื่องจากเป็นเพื่อนกัน จึงอยากแลกลูกกวาดกันคนละแท่ง เพื่อที่หลังจากแลกแล้ว ทั้ง A และ B จะมีจำนวนขนมเท่ากัน (จำนวนขนมทั้งหมดที่แต่ละคนมีคือผลรวมของขนาดของแท่งขนมที่พวกเขามี) เราต้องคืนค่าอาร์เรย์จำนวนเต็ม สมมติว่า ans โดยที่ ans[0] คือขนาดของแท่งขนมที่ A ต้องแลกเปลี่ยน และ ans[1] คือขนาดของลูกกวาดที่บีต้องแลก หากมีหลายคำตอบ เราจะตอบกลับเพียงคำตอบเดียว
ตัวอย่างเช่น ถ้า A =[1, 2] และ B =[2, 3] ผลลัพธ์จะเป็น [1, 2]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- นำผลต่างระหว่างผลรวมของ A กับผลรวมของ B แล้วหารด้วย 2 แล้วนำส่วนจำนวนเต็มเป็นส่วนต่าง
- แปลง B เป็นเซต
- สำหรับฉันใน A
- ถ้า i – ต่างจาก 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]