मान लीजिए हमारे पास एक सरणी nums है। हमें उन जोड़े (i,j) की संख्या खोजनी है जैसे कि nums[i] = nums[j] लेकिन i, j के समान नहीं है।
तो, यदि इनपुट nums = [1,3,1,3,5] है, तो आउटपुट 4 होगा, क्योंकि जोड़े हैं (0,2), (2,0), (1,3) और (3,1)।
इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:
- d := एक नया मैप
- nums में प्रत्येक c के लिए, करें
- d[c] := (d[c] + 1) जब c, d में मौजूद हो अन्यथा 1
- res := 0
- तत्वों की सूची में प्रत्येक c के लिए (सभी x के लिए x in d जहां d[x] > 1), करें
- res := res +(d[c] *(d[c]-1))
- res लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
def solve(nums): d = {} for c in nums: d[c] = d[c] + 1 if c in d.keys() else 1 res = 0 for c in (x for x in d if d[x] > 1): res += (d[c] * (d[c]-1)) return res nums = [1,3,1,3,5] print(solve(nums))इनपुट
[1,3,1,3,5]
आउटपुट
4