मान लीजिए हमारे पास डोमिनोज़ की एक सूची है। प्रत्येक डोमिनोज़ में दो संख्याएँ होती हैं। दो डोमिनोज़ D[i] =[a, b] और D[j] =[c, d] समान होंगे यदि a =c और b =d, या a =d और b =c। तो एक डोमिनोज़ को उल्टा किया जा सकता है। हमें जोड़े की संख्या (i, j) वापस करनी होगी जिसके लिए 0 <=i
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- उत्तर दें =0
- डोमिनोज़ सूची में प्रत्येक जोड़ी p के लिए −
- जोड़ी क्रमित करें p
- फिर प्रत्येक डोमिनोज़ की आवृत्ति को D में संग्रहीत करें
- डी में मूल्यों में बी के लिए -
- उत्तर:=उत्तर + (बी * (बी -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