मान लीजिए हमारे पास कुछ तत्वों वाली एक सरणी है जहां तत्व कई बार दिखाई दे सकते हैं। हमें सरणी को इस तरह सॉर्ट करना है कि तत्व उनकी फ्रीक्वेंसी की वृद्धि के अनुसार सॉर्ट हों। तो जो तत्व कम बार आता है वह पहले आएगा और इसी तरह।
इसलिए, यदि इनपुट है: nums = [1,5,3,1,3,1,2,5], तो आउटपुट [2, 5, 5, 3, 3, 1, 1, 1] होगा।
हल करने के चरण
- mp := एक नया मैप
- nums से प्रत्येक विशिष्ट तत्व i के लिए:
- x := nums में i की संख्या
- यदि x, mp में मौजूद है, तो i को mp[x] के अंत में डालें
- अन्यथा mp[x] := केवल i तत्व वाली सूची
- ans := एक नई सूची
- mp को key के आधार पर सॉर्ट करके प्रत्येक i के लिए:
- mp[i] को रिवर्स ऑर्डर में सॉर्ट करके प्रत्येक j के लिए: j को i बार ans में डालें
- ans वापस करें
उदाहरण (Python)
def solve(nums):
mp = {}
for i in set(nums):
x = nums.count(i)
try:
mp[x].append(i)
except:
mp[x] = [i]
ans = []
for i in sorted(mp):
for j in sorted(mp[i], reverse=True):
ans.extend([j] * i)
return ans
nums = [1, 5, 3, 1, 3, 1, 2, 5]
print(solve(nums))
इनपुट
[1,5,3,1,3,1,2,5]
आउटपुट
[2, 5, 5, 3, 3, 1, 1, 1]