Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【LeetCode热题100】【堆】前 K 个高频元素

【LeetCode热题100】【堆】前 K 个高频元素

作者头像
叶茂林
发布于 2024-04-18 01:02:00
发布于 2024-04-18 01:02:00
13900
代码可运行
举报
运行总次数:0
代码可运行

题目链接:347. 前 K 个高频元素

要找出前K个出现频率最多的元素,可以先用哈希表存储每个元素出现的次数,然后建立一个容量为K的小顶堆,遍历哈希表找到更高频的元素入堆进行堆调整,最后堆里的元素就是前K个出现次数最多的元素

手写一个堆,就在答案容器基础上建堆,注意比较需要用哈希表比较

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
public:
    vector<int> ans;
    int heapSize;
    unordered_map<int, int> hash;

    void adjustHeap(int root) {
        int left = 2 * root + 1;
        int right = left + 1;
        int next = root;
        if (left < heapSize && hash[ans[left]] < hash[ans[next]])
            next = left;
        if (right < heapSize && hash[ans[right]] < hash[ans[next]])
            next = right;
        if (next != root) {
            swap(ans[next], ans[root]);
            adjustHeap(next);
        }
    }

    void buildHeap() {
        for (int i = heapSize / 2 - 1; i >= 0; --i)
            adjustHeap(i);
    }

    vector<int> topKFrequent(vector<int> &nums, int k) {
        this->heapSize = k;
        for (auto &num: nums)
            hash[num]++;
        auto &&start = hash.begin();
        while (k--) {
            ans.push_back(start->first);
            ++start;
        }
        buildHeap();
        while (start != hash.end()) {
            if (start->second > hash[ans[0]]) {
                ans[0] = start->first;
                adjustHeap(0);
            }
            ++start;
        }
        return ans;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java实现俄罗斯方块小游戏。(附完整源代码)
俄罗斯方块是俄罗斯人发明的。这人叫阿列克谢·帕基特诺夫(Алексей Пажитнов 英文:Alexey Pazhitnov)。俄罗斯方块原名是俄语Тетрис(英语是Tetris),这个名字来源于希腊语tetra,意思是“四”,而游戏的作者最喜欢网球(tennis)。于是,他把两个词tetra和tennis合而为一,命名为Tetris,这也就是俄罗斯方块名字的由来。
百思不得小赵
2022/12/01
6.6K1
Java实现俄罗斯方块小游戏。(附完整源代码)
Python:游戏:300行代码实现俄罗斯方块
俄罗斯方块是儿时最经典的游戏之一,刚开始接触 pygame 的时候就想写一个俄罗斯方块。但是想到旋转,停靠,消除等操作,感觉好像很难啊,等真正写完了发现,一共也就 300 行代码,并没有什么难的。
丹枫无迹
2019/01/22
6.1K0
python制作俄罗斯方块
俄罗斯方块》(Tetris, 俄文:Тетрис)是一款由俄罗斯人阿列克谢·帕基特诺夫于1984年6月发明的休闲游戏。 该游戏曾经被多家公司代理过。经过多轮诉讼后,该游戏的代理权最终被任天堂获得。 [1] 任天堂对于俄罗斯方块来说意义重大,因为将它与GB搭配在一起后,获得了巨大的成功。 [1] 《俄罗斯方块》的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。
GeekLiHua
2025/01/21
1560
python制作俄罗斯方块
C++实现俄罗斯方块(附代码)
  还记得俄罗斯方块吗?相信这是小时候我们每个人都喜欢玩的一个小游戏。顾名思义,俄罗斯方块自然是俄罗斯人发明的。这人叫阿列克谢·帕基特诺夫。他设置这个游戏的规则是:由小方块组成的不同形状的板块陆续从屏幕上方落下来,玩家通过调整板块的位置和方向,使它们在屏幕底部拼出完整的一条或几条。这些完整的横条会随即消失,给新落下来的板块腾出空间,与此同时,玩家得到分数奖励。没有被消除掉的方块不断堆积起来,一旦堆到屏幕顶端,玩家便告输,游戏结束。
墨明棋妙27
2022/08/24
10.6K4
C++实现俄罗斯方块(附代码)
俄罗斯方块(C语言实现)
俄罗斯方块相信大家都知道,这里就不再介绍什么游戏背景了,我这里对本代码实现的俄罗斯方块作一些说明:
全栈程序员站长
2022/08/30
2.1K1
俄罗斯方块(C语言实现)
基于DOS的简易俄罗斯方块制作
制作一个简易的俄罗斯方块,未调用graphics库(装了半天不成功),完全的黑框操作 基本思路: 1.利二维数组表示地图(也可以利用一维数组,此处利用的是一维数组) 0.表示没有方格,1.表示正在下落的方格 2.表示墙壁 2.共有七种俄罗斯方块,但是有19种状态 (绘制方块处,总共有7种俄罗斯方块,旋转之后可以形成19种方块) 3.每个方块需设置一个中心方块 ,尽量与其他的方块有联系。中心方块用B[0]表示,其他的方块由1,2,3表示
用户7886150
2020/12/07
4270
俄罗斯方块
俄罗斯方块游戏制作教程,一个我考虑了很久要不要发的项目,因为这个项目代码相对来说有点长,大概500行,最为致命的就是逻辑关系很复杂,想要用语言来表达很困难,最后就是文章太长了,5000字的正文啊,写的我手抽筋~
DeROy
2020/05/11
1.7K0
Python的俄罗斯方块源码
在git上看到的,分享给大家,已经测试可用! #: pip install pygameimport randomimport sysimport pygame #: 颜色定义COLOR_WHITE
萌海无涯
2019/08/03
1.8K0
俄罗斯方块
俄罗斯方块是一个很经典的游戏,做一个UWP俄罗斯方块没有什么用,我想说的是移植,把经典游戏移植到UWP。
林德熙
2018/09/18
2.1K0
俄罗斯方块
基于Java的俄罗斯方块游戏的设计与实现
俄罗斯方块项目,基本功能包括:游戏主界面显示模块、方块及数据显示模块、方块移动控制模块、游戏界面颜色控制模块、游戏进度、等级控制模块等。本项目结构如下: (1)游戏主界面显示模块: 显示游戏和帮助两个菜单; 游戏使用功能键盘,得分 等级;
程序员小藕
2020/07/28
2.8K0
基于Java的俄罗斯方块游戏的设计与实现
js手写俄罗斯方块
代码如下 html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" type="text/css" href="css/k.css"/> </head> <body> <div class="k"> <div class="main-box">
连小壮
2018/08/31
1.6K0
致青春--Python实现俄罗斯方块
俄罗斯方块游戏是世界上最流行的游戏之一。是由一名叫Alexey Pajitnov的俄罗斯程序员在1985年制作的,从那时起,这个游戏就风靡了各个游戏平台,而且俄罗斯方块是现在很多80,90后的青春,最经典最好玩则是小时候10块钱的那种掌机上的俄罗斯方块,游戏从画面音乐,到经典玩法,具有充实的内容,满满的都是爱,今天怀念一下逝去的青春,用Python实现俄罗斯方块。
PM小王
2019/07/02
9910
致青春--Python实现俄罗斯方块
你的童年有俄罗斯方块吗?教你用 Python 实现俄罗斯方块!
还是为数不多的游戏类电子产品,对小孩子更是有着不可抗拒的魔力,在当时如果哪个小孩买了一个小游戏机,大伙一定迅速围上去...
Python小二
2020/08/18
7990
你的童年有俄罗斯方块吗?教你用 Python 实现俄罗斯方块!
WEB小游戏开发之俄罗斯方块游戏项目说明
俄罗斯方块是一款经典的益智游戏,由俄罗斯工程师阿列克谢·帕基特诺夫(Alexey Pajitnov)于1984年发明。游戏最初是在Electronika 60计算机上开发的,后来在1989年由任天堂推广到全球,成为有史以来最受欢迎的电子游戏之一。
huazie
2025/07/19
2461
WEB小游戏开发之俄罗斯方块游戏项目说明
shell脚本 俄罗斯方块
邱俊辉123 分类:生物化学·时间:2018-09-26 23:45:49·阅读:71
戈贝尔光和热
2018/12/27
1.1K0
基于 HTML5 的 WebGL 3D 版俄罗斯方块
前言 摘要:2D 的俄罗斯方块已经被人玩烂了,突发奇想就做了个 3D 的游戏机,用来玩俄罗斯方块。。。实现的基本想法是先在 2D 上实现俄罗斯方块小游戏,然后使用 3D 建模功能创建一个 3D 街机模
HT_hightopo
2018/06/04
7790
使用JavaScript实现一个俄罗斯方块
使用JavaScript实现一个俄罗斯方块 清明假期期间,闲的无聊,就做了一个小游戏玩玩,目前游戏逻辑上暂未发现bug,只不过样子稍微丑了一些-.- 项目地址:https:
贾顺名
2018/04/12
1K0
使用JavaScript实现一个俄罗斯方块
iOS Charts实现非连续折线图
今天看了一篇文章,Charts实现非连续折线图。做一个标记可能以后会用到 效果如下:
赵哥窟
2018/12/05
2K0
iOS Charts实现非连续折线图
C语言俄罗斯方块(新版本完整代码)
旧版800行代码,这个只有500行,并且不闪屏,看着舒服。废话不多说,上图,上代码。
花狗Fdog
2020/10/28
9K1
C语言俄罗斯方块(新版本完整代码)
C#之四十八 俄罗斯方块设计
本系统为一个用C#实现的为我们所熟悉的简单的俄罗斯方块游戏,该系统的具体功能如下:
张哥编程
2024/12/17
1951
C#之四十八 俄罗斯方块设计
相关推荐
Java实现俄罗斯方块小游戏。(附完整源代码)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验