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

จำนวนคู่โดมิโนที่เทียบเท่าใน Python


สมมติว่าเรามีรายการโดมิโน โดมิโนแต่ละตัวมีตัวเลขสองตัว โดมิโนสองตัว D[i] =[a, b] และ D[j] =[c, d] จะเหมือนกันถ้า a =c และ b =d หรือ a =d และ b =c ดังนั้นหนึ่งโดมิโนสามารถย้อนกลับได้ เราต้องส่งคืนจำนวนคู่ (i, j) ซึ่ง 0 <=i

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ให้คำตอบ =0
  • สำหรับแต่ละคู่ p ในรายการโดมิโน −
    • จัดเรียงคู่ p
    • จากนั้นเก็บความถี่ของแต่ละโดมิโนลงใน D
  • สำหรับค่า b ใน D −
    • answer :=answer + (b * (b - 1))/2
  • ส่งคืนคำตอบ

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

class Solution(object):
   def numEquivDominoPairs(self, dominoes):
      d = {}
      ans = 0
      for i in dominoes:
         i.sort()
         i = tuple(i)
         if i not in d:
            d[i]= 1
         else:
            d[i]+=1
      for b in d.values():
         ans += ((b*(b-1))//2)
      return ans
ob1 = Solution()
print(ob1.numEquivDominoPairs([[1,2],[2,1],[3,4],[5,6], [4,3]]))

อินพุต

[[1,2],[2,1],[3,4],[5,6],[4,3]]

ผลลัพธ์

2