力扣刷题思考:347. 前 K 个高频元素
最近按照某网站刷题顺序,刷到了力扣347. 前 K 个高频元素,产生了些思考。
我的思路是:
1.用hash map记录每个元素值和频率。
2.写个仿函数,使用sort快排降序map。
3.从头输出k个值。
但是!!!理想很美好,现实很骨感,我忽略了map是associated container不可以使用sort(愧对侯捷老师的课了)。
所以问题出现在第2步,解决方法是把associated container转化为sequence container就好。
网站中原po的思路是:
1.用hash map记录每个元素值和频率。
2.使用优先级队列priority_queue,维护大小为k的小顶堆。
(由于频率小的在上面,当挨个遍历map,那新进来的频率大于顶部的,就会把顶部的给pop出去。)
3.从小顶堆中由顶至底部赋到数组中(先写入数组尾部)。
但是!!!这里给小顶堆设计的仿函数与STL中sort函数设计的仿函数作用相反:
sort中:使用less<>()则表示升序。
使用greater表示降序,自己写仿函数return 后面用>表示由大到小排列,整个序列降序排列。
优先级队列中:大顶堆,最大的是父节点,仿函数对应的是less或者return使用 <。
小顶堆,最小的是父节点,仿函数对应的是greater或者return使用 >。
力扣刷题思考:347. 前 K 个高频元素相关推荐
- 力扣347 前 K 个高频元素 -- JS
347. 前 K 个高频元素 - 力扣(LeetCode) (leetcode-cn.com) 一:使用对象进行解题,对象的属性为给定数组的元素,属性值为给定数组元素出现的次数: 二:把对象转成数组, ...
- 力扣347.前 K 个高频元素(优先队列)
347. 前 K 个高频元素 本题的关键点是对map中的value进行排序. 题目中涉及前几个,考虑优先队列 优先队列要通过lamda表达式写清楚是大数在顶还是小数在顶 逆序: PriorityQue ...
- 模拟卷Leetcode【普通】347. 前 K 个高频元素
347. 前 K 个高频元素 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例 1: 输入: nums = [1,1,1,2,2 ...
- Suzy找到实习了吗Day 13 | 栈和队列结束啦 239. 滑动窗口最大值,347. 前 K 个高频元素
day 13 239. 滑动窗口最大值 Python的Deque模块详解 solution 我复制的,好难不会写 347. 前 K 个高频元素(一刷我没有用栈,用的哈希法) solution(hash ...
- Leetcode 347. 前 K 个高频元素
Leetcode 347. 前 K 个高频元素 1.问题分析 2.问题解决 3.总结 1.问题分析 题目链接:https://leetcode-cn.com/problems/top-k-freque ...
- 【LeetCode】【HOT】347. 前 K 个高频元素(哈希表+优先队列)
[LeetCode][HOT]347. 前 K 个高频元素 文章目录 [LeetCode][HOT]347. 前 K 个高频元素 package hot;import java.util.Arrays ...
- LeetCode——347. 前 K 个高频元素【最小堆实现】
LeetCode--347. 前 K 个高频元素[最小堆实现] 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例1: 输入: n ...
- Java实现 LeetCode 347 前 K 个高频元素
347. 前 K 个高频元素 给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输 ...
- 代码随想录算法训练营day13 | 239. 滑动窗口最大值 | 347.前 K 个高频元素
一.239. 滑动窗口最大值 from collections import dequeclass MyQueue: #单调队列(从大到小def __init__(self):self.queue = ...
- 215.数组中的第K个最大元素/347. 前 K 个高频元素
2020-05-25 1.题目描述 数组中的第K个最大元素 2.题解 1.使用冒泡排序 2.使用快速排序 3.优先队列(内部是用堆来实现的) 3.代码 class Solution { public: ...
最新文章
- apache的日志级别和设置
- php递归实现冒泡排序,排序算法之PHP版快速排序、冒泡排序
- linux网卡eth1如何修改为eth0
- [原创]深入理解C# 3.x的新特性(3):从Delegate、Anonymous Method到Lambda Expression
- 【spring boot】启动类启动 错误: 找不到或无法加载主类 com.codingapi.tm.TxManagerApplication 的解决方案...
- jquery的一些常用方法
- 伺服电机常用参数设置_伺服驱动器常见参数的设置
- c语言 停车管理系统
- 〖EXP〗NSA MS17010永恒之蓝漏洞一键工具
- linux ssh freeradius,如何将SSH身份验证配置到FreeRADIUS服务器
- 演示u盘启动盘装系统教程
- ubuntu下安装运行电路仿真软件ngspice,打通KiCAD上手指南
- js去除数组中的空值,假值
- JAVA 16方格排序游戏
- android随手记毕业论文,关于毕业论文的思考
- 加州大学圣地亚哥计算机硕士申请,美国加州大学圣地亚哥分校计算机工程硕士.pdf...
- 小米笔记本电脑怎么使用U盘重装系统教学
- 狗屎一样的面试官,你遇到过几个?
- Python制作简易计算器(GUI)---Tkinter
- NOIP 2018提高组复赛C/C++试题及答案详解
热门文章
- python 批量去掉语音中的静音段
- mysql计算同比和环比的区别_MySQL统计同比环比SQL
- 使用Fiddler监控雷电/夜神模拟器浏览网页:安全警告:该网站的安全证书有问题.解决方案!
- 芭蕉树上第二十根芭蕉-- c++路线
- 对话「平衡车之父」:把Solowheel带回中国
- C语言:下载并安装编译器(MinGW-W64 GCC)win10环境
- 计算机图形学:中点划线法(任意斜率)
- html计算平方米,平方怎么算(面积怎么算平方米)
- HCIA-IoT 个人学习总结 Day2
- H3C网络故障排除方法