LeetCode 1636. 按照频率将数组升序排序(哈希+排序)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 1636. 按照频率将数组升序排序(哈希+排序)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
給你一個整數數組 nums ,請你將數組按照每個值的頻率 升序 排序。
如果有多個值的頻率相同,請你按照數值本身將它們 降序 排序。
請你返回排序后的數組。
示例 1: 輸入:nums = [1,1,2,2,2,3] 輸出:[3,1,1,2,2,2] 解釋:'3' 頻率為 1,'1' 頻率為 2,'2' 頻率為 3 。示例 2: 輸入:nums = [2,3,1,3,2] 輸出:[1,3,3,2,2] 解釋:'2' 和 '3' 頻率都為 2 ,所以它們之間按照數值本身降序排序。示例 3: 輸入:nums = [-1,1,-6,4,5,-6,1,4,1] 輸出:[5,-1,4,4,-6,-6,1,1,1]提示: 1 <= nums.length <= 100 -100 <= nums[i] <= 100來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/sort-array-by-increasing-frequency
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- 哈希計數頻率
- 自定義排序
或者簡潔寫法:
class Solution { public:vector<int> frequencySort(vector<int>& nums) {unordered_map<int, int> m;for(auto n : nums)m[n]++;sort(nums.begin(), nums.end(),[&](auto a, auto b) {if(m[a] == m[b])return a > b;return m[a] < m[b];});return nums;} };16 ms 11.6 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 1636. 按照频率将数组升序排序(哈希+排序)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 425. 单词方块(T
- 下一篇: LeetCode 981. 基于时间的键