当前位置: 首页 > article >正文

每日一题 347. 前 K 个高频元素

347. 前 K 个高频元素

自定义结构体排序
解法一

class Solution {
public:
    vector<int> topKFrequent(vector<int>& nums, int k) {
        unordered_map<int,int> cnt;
        for(int i=0;i<nums.size();++i)
        {
            cnt[nums[i]]++;
        }

        auto cmp = [&](const pair<int,int> &a, const pair<int,int> &b )
        {
            return a.second > b.second;
        };

        priority_queue<pair<int,int>,vector<pair<int,int>> , decltype(cmp)> que(cmp);
        vector<int> ans; 
        for(auto [num,numCnt] : cnt )
        {
            que.push({num,numCnt});
            if(que.size() > k)
            {
                que.pop();
            }
        }

        while(!que.empty())
        {
            auto t = que.top();
            int num = t.first;
            que.pop();
            ans.push_back(num);
        }
        return ans;
    }
};

解法二

struct node{
    int num;
    int cnt;
    node()
    {

    }
    bool operator < (const node m)const
    {
        return cnt > m.cnt;
    }
};

class Solution {
public:
    vector<int> topKFrequent(vector<int>& nums, int k) {
        
        unordered_map<int,int> mp;
        vector<node> nodes;
        for(int i=0;i<nums.size();++i){
            if(!mp.count(nums[i]))
            {
                mp[nums[i]] = nodes.size();
                node* temp = new node();
                temp->num = nums[i];
                temp->cnt = 0;
                nodes.push_back(*temp);
            }
            int idx = mp[nums[i]];
            nodes[idx].cnt ++;
        }
        sort(nodes.begin(),nodes.end());
        vector<int> ans;
        for(int i=0;i<k;++i){
            ans.push_back(nodes[i].num);
        }
        return ans;
        
    }
};

http://www.kler.cn/a/456264.html

相关文章:

  • 数据库原理及应用(MySQL版-李月军)-习题参考答案
  • 【RabbitMQ】超详细Windows系统下RabbitMQ的安装配置
  • 如何使用fetch函数获取多个数据并同时使用(在嵌套的fetch函数之间传递数据)
  • 如何为运行在 PICO 4 Ultra 设备上的项目设置外部文件读写权限?
  • pdf有密码,如何实现pdf转换word?
  • 易基因: BS+ChIP-seq揭示DNA甲基化调控非编码RNA(VIM-AS1)抑制肿瘤侵袭性|Exp Mol Med
  • 在K8S中,nodePort的externalTrafficPolicy字段有什么作用?
  • Vue.js组件开发-如何实现vueFLow流程
  • pyqt6 OpenCV相关练习
  • 【信息系统项目管理师】高分论文:论信息系统项目的资源管理(移动警务通系统)
  • 如何在 Ubuntu 22.04 上安装 Elasticsearch
  • 【Maven】聚合与继承
  • 算法论文/目标检测4——介绍DETR家族到DINO的发展史
  • Spring自动化创建脚本-解放繁琐的初始化配置!!!(自动化SSM整合)
  • 探索 .idea 文件夹:Java Maven 工程的隐形守护者
  • Java连接HANA数据库
  • 腾讯音乐:说说Redis脑裂问题?
  • MYSQL访问控制,第2阶段:请求验证
  • 【数据仓库】spark大数据处理框架
  • springboot整合log4j2案例以及异常输出格式案例2