Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Fair Candy Swap ใน Python


สมมุติว่า 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]