Временная сложность Top K Frequent Elements - PullRequest
0 голосов
/ 04 мая 2020

Может кто-нибудь помочь мне с временной сложностью следующей функции. Насколько я понимаю, сложность времени 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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...