मान लीजिए हमारे पास डोमिनोज की एक सूची है। प्रत्येक डोमिनो में दो नंबर होते हैं। दो डोमिनोज D[i] = [a, b] और D[j] = [c, d] समान होंगे यदि a = c और b = d, या a = d और b = c। इसलिए एक डोमिनो को उल्टा किया जा सकता है। हमें उन जोड़ों (i, j) की संख्या लौटानी है जिनके लिए 0 <= i < j < डोमिनोज की लंबाई, और D[i], D[j] के समतुल्य है। इसलिए यदि डोमिनो सूची [[1, 2], [2, 1], [3, 4], [6, 5]] की तरह है। आउटपुट 1 होगा।
समाधान के चरण
- answer = 0 मान लें
- डोमिनोज सूची में प्रत्येक जोड़ी p के लिए
- जोड़ी p को सॉर्ट करें
- फिर प्रत्येक डोमिनो की फ्रीक्वेंसी D में स्टोर करें
- D में values के लिए प्रत्येक b
- answer := answer + (b * (b - 1))/2
- answer लौटाएं
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
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