Я только что решил проблему с Leetcode. Но меня смутила функция sort() в C++. Подробнее об этом
Проблема. Дан массив целых чисел, отсортируйте его в порядке возрастания в зависимости от частоты ценности. Если несколько значений имеют одинаковую частоту, отсортируйте их в порядке убывания.
-Ввод: массив
-Выход: отсортированный массив по правилу задачи
-Input: [1,1,2,2,2,3] -Output for first code snippet: [3,1,1,2,2,2] -Output for second code snippet: [3,2,2,2,1,1]
Я не понимаю, почему вторая функция sort() не работает. Может ли кто-нибудь помочь мне прояснить ситуацию, пожалуйста. Большое спасибо!!!
Я пробую два фрагмента кода с одной и той же функцией, но кажется, что возвращаются два разных результата.
Я только что решил проблему с Leetcode. Но меня смутила функция sort() в C++. Подробнее об этом [list] [*][b]Проблема[/b]. Дан массив целых чисел, отсортируйте его в порядке возрастания в зависимости от частоты ценности. Если несколько значений имеют одинаковую частоту, отсортируйте их в порядке убывания. -[b]Ввод[/b]: массив -[b]Выход[/b]: отсортированный массив по правилу задачи [/list] Послушайте мой код: -[b]Первый фрагмент кода[/b]: [code]class Solution { public: vector frequencySort(vector& nums) { std::map hm; for (int numb : nums) hm[numb] ++ ; sort(nums.begin(), nums.end(), [&](int a,int b){ if(hm[a] == hm[b]) return a > b; return hm[a] < hm[b]; }); } } [/code] [b]Второй фрагмент кода[/b]: [code]class Solution { public: vector frequencySort(vector& nums) { std::map hm; for (int numb : nums) hm[numb] ++ ; sort(nums.begin(), nums.end(), [&](int a,int b){ if(hm[a] == hm[b]) return a > b; return hm[a] < hm[b]; }); return nums; vector arr; for(auto &[numb,freq] : hm){ while(freq > 0){ arr.push_back(numb); freq--; } } std::sort(arr.begin(), arr.end(), [&](int a, int b){ if( hm[a] == hm[b]) return a > b; else return hm[a] < hm[b]; }); return arr; } }; [/code] [b]Вот пример[/b] [code]-Input: [1,1,2,2,2,3] -Output for first code snippet: [3,1,1,2,2,2] -Output for second code snippet: [3,2,2,2,1,1] [/code] [b]Я не понимаю, почему вторая функция sort() не работает. Может ли кто-нибудь помочь мне прояснить ситуацию, пожалуйста. Большое спасибо!!![/b] Я пробую два фрагмента кода с одной и той же функцией, но кажется, что возвращаются два разных результата.