मान लीजिए कि हमारे पास पूर्णांक संख्याओं की एक गैर-रिक्त सरणी है। हमें kth सबसे लगातार तत्वों को वापस करना होगा। इसलिए यदि तत्व [1,1,1,1,2,2,3,3,3] और k =2 हैं, तो परिणाम होगा
औपचारिक रूप से समारोह चाहिए -
- यदि i, j, k मौजूद है तो सही लौटें
- ऐसे कि arr[i]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- num_freq =एक खाली नक्शा, freq_list :=एक खाली नक्शा
- प्रत्येक तत्व के लिए मैं अंकों में
- यदि मैं num_freq में नहीं है, तो num_freq[i] :=1, अन्यथा num_freq[i] को 1 से बढ़ा दें
- num_freq मानचित्र में प्रत्येक कुंजी-मान युग्म के लिए
- यदि मान freq_list में मौजूद नहीं है, तो freq_list[value] :=एक सूची [कुंजी] के साथ, अन्यथा freq_list[value] सरणी में कुंजी डालें
- res :=खाली सूची
- i के लिए :=0 तक की संख्याओं की लंबाई
- अगर मैं freq_list में हूं, तो freq_list[i] के तत्वों को res में जोड़ें
- यदि रेस की लंबाई>=k, तो ब्रेक करें
- वापसी का परिणाम
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution(object):
def topKFrequent(self, nums, k):
number_frequency = {}
frequency_list ={}
for i in nums:
if i not in number_frequency:
number_frequency[i] = 1
else:
number_frequency[i] += 1
for key,value in number_frequency.items():
if value not in frequency_list:
frequency_list[value] = [key]
else:
frequency_list[value].append(key)
result = []
for i in range(len(nums),0,-1):
if i in frequency_list:
result.extend(frequency_list[i])
if len(result) >=k:
break
return result
ob1 = Solution()
print(ob1.topKFrequent([1,1,1,1,2,2,3,3,3], 2)) इनपुट
[1,1,1,1,2,2,3,3,3] 2
आउटपुट
[1, 3]