最近按照某网站刷题顺序,刷到了力扣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 个高频元素相关推荐

  1. 力扣347 前 K 个高频元素 -- JS

    347. 前 K 个高频元素 - 力扣(LeetCode) (leetcode-cn.com) 一:使用对象进行解题,对象的属性为给定数组的元素,属性值为给定数组元素出现的次数: 二:把对象转成数组, ...

  2. 力扣347.前 K 个高频元素(优先队列)

    347. 前 K 个高频元素 本题的关键点是对map中的value进行排序. 题目中涉及前几个,考虑优先队列 优先队列要通过lamda表达式写清楚是大数在顶还是小数在顶 逆序: PriorityQue ...

  3. 模拟卷Leetcode【普通】347. 前 K 个高频元素

    347. 前 K 个高频元素 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例 1: 输入: nums = [1,1,1,2,2 ...

  4. Suzy找到实习了吗Day 13 | 栈和队列结束啦 239. 滑动窗口最大值,347. 前 K 个高频元素

    day 13 239. 滑动窗口最大值 Python的Deque模块详解 solution 我复制的,好难不会写 347. 前 K 个高频元素(一刷我没有用栈,用的哈希法) solution(hash ...

  5. Leetcode 347. 前 K 个高频元素

    Leetcode 347. 前 K 个高频元素 1.问题分析 2.问题解决 3.总结 1.问题分析 题目链接:https://leetcode-cn.com/problems/top-k-freque ...

  6. 【LeetCode】【HOT】347. 前 K 个高频元素(哈希表+优先队列)

    [LeetCode][HOT]347. 前 K 个高频元素 文章目录 [LeetCode][HOT]347. 前 K 个高频元素 package hot;import java.util.Arrays ...

  7. LeetCode——347. 前 K 个高频元素【最小堆实现】

    LeetCode--347. 前 K 个高频元素[最小堆实现] 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案. 示例1: 输入: n ...

  8. Java实现 LeetCode 347 前 K 个高频元素

    347. 前 K 个高频元素 给定一个非空的整数数组,返回其中出现频率前 k 高的元素. 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输 ...

  9. 代码随想录算法训练营day13 | 239. 滑动窗口最大值 | 347.前 K 个高频元素

    一.239. 滑动窗口最大值 from collections import dequeclass MyQueue: #单调队列(从大到小def __init__(self):self.queue = ...

  10. 215.数组中的第K个最大元素/347. 前 K 个高频元素

    2020-05-25 1.题目描述 数组中的第K个最大元素 2.题解 1.使用冒泡排序 2.使用快速排序 3.优先队列(内部是用堆来实现的) 3.代码 class Solution { public: ...

最新文章

  1. apache的日志级别和设置
  2. php递归实现冒泡排序,排序算法之PHP版快速排序、冒泡排序
  3. linux网卡eth1如何修改为eth0
  4. [原创]深入理解C# 3.x的新特性(3):从Delegate、Anonymous Method到Lambda Expression
  5. 【spring boot】启动类启动 错误: 找不到或无法加载主类 com.codingapi.tm.TxManagerApplication 的解决方案...
  6. jquery的一些常用方法
  7. 伺服电机常用参数设置_伺服驱动器常见参数的设置
  8. c语言 停车管理系统
  9. 〖EXP〗NSA MS17010永恒之蓝漏洞一键工具
  10. linux ssh freeradius,如何将SSH身份验证配置到FreeRADIUS服务器
  11. 演示u盘启动盘装系统教程
  12. ubuntu下安装运行电路仿真软件ngspice,打通KiCAD上手指南
  13. js去除数组中的空值,假值
  14. JAVA 16方格排序游戏
  15. android随手记毕业论文,关于毕业论文的思考
  16. 加州大学圣地亚哥计算机硕士申请,美国加州大学圣地亚哥分校计算机工程硕士.pdf...
  17. 小米笔记本电脑怎么使用U盘重装系统教学
  18. 狗屎一样的面试官,你遇到过几个?
  19. Python制作简易计算器(GUI)---Tkinter
  20. NOIP 2018提高组复赛C/C++试题及答案详解

热门文章

  1. python 批量去掉语音中的静音段
  2. mysql计算同比和环比的区别_MySQL统计同比环比SQL
  3. 使用Fiddler监控雷电/夜神模拟器浏览网页:安全警告:该网站的安全证书有问题.解决方案!
  4. 芭蕉树上第二十根芭蕉-- c++路线
  5. 对话「平衡车之父」:把Solowheel带回中国
  6. C语言:下载并安装编译器(MinGW-W64 GCC)win10环境
  7. 计算机图形学:中点划线法(任意斜率)
  8. html计算平方米,平方怎么算(面积怎么算平方米)
  9. HCIA-IoT 个人学习总结 Day2
  10. H3C网络故障排除方法