मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हमें उन सबलिस्ट की संख्या ढूंढनी है जहां पहला तत्व और अंतिम तत्व समान हैं।
उदाहरण के लिए, यदि इनपुट nums = [10, 15, 13, 10] है, तो आउटपुट 5 होगा, क्योंकि समान पहले और अंतिम तत्व वाली सबलिस्ट हैं: [10], [15], [13], [10], [10, 15, 13, 10]।
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- num_sublists := nums का आकार
- d := एक खाली मैप
- nums में प्रत्येक n के लिए करें:
- d[n] := d[n] + 1
- d में प्रत्येक संख्या k और संबंधित आवृत्ति v के लिए करें:
- यदि v, 1 के बराबर नहीं है, तो num_sublists := num_sublists + (v-1)*v//2
- num_sublists वापस करें
उदाहरण
from collections import defaultdict
class Solution:
def solve(self, nums):
num_sublists = len(nums)
d = defaultdict(int)
for n in nums:
d[n] += 1
for k, v in d.items():
if v != 1:
num_sublists += (v-1)*v//2
return num_sublists
ob = Solution()
nums = [10, 15, 13, 10]
print(ob.solve(nums))
इनपुट
[10, 15, 13, 10]
आउटपुट
5