代码随想录刷题学习日记

仅为个人记录复盘学习历程,解题思路来自代码随想录

代码随想录刷题笔记总结网址:
代码随想录

347.前 K 个高频元素

给定一个非空的整数数组,返回其中出现频率前 k 高的元素,可以按任意顺序返回答案。

提供参数:整数数组nums,整数k。

关键思路:使用优先级队列中的小顶堆排除所有不满足要求的元素

主要操作:

创建map,用于记录元素及其频率(元素数值,出现频率)

遍历数组,记录出现元素的出现频率

创建小顶堆,及定义大小比较方式

遍历map中的每一条键值对,进行判断:

若堆的大小小于k,直接加入

若对的大小大于等于k,进行判断:

如果当前堆顶元素出现频率小于当前元素出现频率,将堆顶元素弹出,将新元素加入

如果当前堆顶元素出现频率大于等于当前元素出现频率,不进行操作

最后堆中仅剩出现频率最高的k个元素

将堆中元素弹出,封装到返回数组int[]res返回

栈与队列总结篇学习

STL容器适配器:将不适用的序列式容器(包括 vector、deque 和 list)变得适用,通过封装某个序列式容器,并重新组合该容器中包含的成员函数,使其满足某些特定场景的需要。容器适配器本质上还是容器,只不过此容器模板类的实现,利用了大量其它基础容器模板类中已经写好的成员函数。当然,如果必要的话,容器适配器中也可以自创新的成员函数。STL 容器适配器内部使用的容器并不是固定的,用户可以在满足特定条件的多个基础容器中自由选择。

简单来说容器适配器就是通过对某些基础容器的调用组合,构造出的一种更适合实际应用场景的容器。

一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时在去弹出元素就是栈的顺序。

递归的实现是栈:每一次递归调用都会把函数的局部变量、参数值和返回地址等压入调用栈中,所以递归是不断堆叠的,递归中递的过程将还未完成的函数临时数据都进行了存储,等到归的时候再执行。

匹配问题是栈的强项。

相关推荐
爱喝可乐的老王20 小时前
机器学习监督学习模型--决策树
学习·决策树·机器学习
人有一心20 小时前
【学习笔记】因果推理导论第4课
笔记·深度学习·学习
IT=>小脑虎20 小时前
软件测试零基础衔接进阶知识点详解【进阶版】
学习
saoys20 小时前
Opencv 学习笔记:列表筛选(查找满足指定间距的数值)
笔记·opencv·学习
mjhcsp20 小时前
P14977 [USACO26JAN1] Lineup Queries S(题解)
数据结构·c++·算法
HalvmånEver20 小时前
Linux:信号保存下(信号二)
linux·运维·服务器·c++·学习·信号
狐5720 小时前
2026-01-22-牛客每日一题-二进制不同位数
算法·牛客
十八岁讨厌编程20 小时前
【算法训练营 · 二刷总结篇】链表、哈希表部分
算法·链表·散列表
以孝治家行动20 小时前
风雨无阻守平安 以孝治家韩庄村三支队伍踏雪入户走访慰问
学习·以孝治家·正能量
西瓜泡泡奶20 小时前
代码随想录算法Day13|(二叉树part3)110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和、222.完全二叉树的节点个数
数据结构·算法·二叉树·平衡二叉树·完全二叉树·二叉树路径·左叶子之和