Giả sử chúng ta có một danh sách các dominos. Mỗi quân domino có hai số. Hai dominos D [i] =[a, b] và D [j] =[c, d] sẽ giống nhau nếu a =c và b =d, hoặc a =d và b =c. Vì vậy, một domino có thể được đảo ngược. Chúng ta phải trả về số cặp (i, j) mà 0 <=i
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- hãy để câu trả lời =0
- cho mỗi cặp p trong danh sách dominos -
- sắp xếp cặp p
- Sau đó, lưu trữ tần số của mỗi quân cờ domino thành D
- cho b trong các giá trị trong D -
- answer:=answer + (b * (b - 1)) / 2
- trả lời câu trả lời
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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]]))
Đầu vào
[[1,2],[2,1],[3,4],[5,6],[4,3]]
Đầu ra
2