Может кто-нибудь помочь мне с временной сложностью следующей функции. Насколько я понимаю, сложность времени O (n). Я новичок в анализе сложности алгоритма и, следовательно, не уверен в этом.
Вопрос в следующем:
Если задан непустой массив целых чисел, вернуть k наиболее часто встречающихся элементов.
Ввод: nums = [1,1,1,2,2,3], k = 2
Ввод: [1,2]
vector<int> topKFrequent(vector<int>& nums, int k) {
vector<int> result ;
int n = nums.size();
if(n==0) return result;
unordered_map<int, int> mp;
int maxie = 0;
for(int i=0; i<n; i++){
mp[nums[i]]++;
maxie = max(maxie, mp[nums[i]]);
}
vector<vector<int>> count(maxie+1);
for(auto itr=mp.begin(); itr!=mp.end(); itr++){
count[itr->second].push_back(itr->first);
}
int sum = 0;
for(int i=maxie; i>0; i--){
for(int j=0; j<count[i].size(); j++){
if(sum == k)
return result;
result.push_back(count[i][j]);
sum++;
}
}
return result;
}