ধরুন আমাদের ডমিনোর একটি তালিকা আছে। প্রতিটি ডমিনোর দুটি সংখ্যা রয়েছে। দুটি ডোমিনো 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-এর জন্য −
- উত্তর :=উত্তর + (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