Функция sort() в C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Функция sort() в C++

Сообщение Anonymous »

Я только что решил проблему с Leetcode. Но меня смутила функция sort() в C++. Подробнее об этом
  • Проблема. Дан массив целых чисел, отсортируйте его в порядке возрастания в зависимости от частоты ценности. Если несколько значений имеют одинаковую частоту, отсортируйте их в порядке убывания.
    -Ввод: массив
    -Выход: отсортированный массив по правилу задачи
Послушайте мой код:
-Первый фрагмент кода:

Код: Выделить всё

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];
});
}
}
Второй фрагмент кода:

Код: Выделить всё

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;
}
};
Вот пример

Код: Выделить всё

-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() не работает. Может ли кто-нибудь помочь мне прояснить ситуацию, пожалуйста. Большое спасибо!!!
Я пробую два фрагмента кода с одной и той же функцией, но кажется, что возвращаются два разных результата.

Подробнее здесь: https://stackoverflow.com/questions/787 ... ction-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»