自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 洛谷 P1165 日志分析

于是用了unordered_map替代两个数组,很高兴的是测试样例4通过了,但是测试样例6又不对了,555苦恼中。在进行查询操作时只需要返回当前栈最大元素的值,所以对于栈内存储的是什么元素我们其实不用在意,也就是将我刚开始的那个存储最大值的数组直接作为栈。看到题目就想着利用栈来完成数据的输入输出操作,但是这个时候对于操作二要求查询当前集装箱的最大质量,就纠结上了。后来想到利用两个数组来进行存储,一个记录相同重量的个数,另一个来记录当前质量进入栈时的最大质量。

2025-03-26 16:17:38 170

原创 洛谷 P1044 [NOIP 2003 普及组] 栈

从洛谷题解搜寻到的解法:1、利用卡特兰数直接找到递推公式,计算前十八项答案2、使用递归算法,在递归中使用记忆化方法存储已经找寻到过的情况(push、pop次数和相同&&栈内元素数量相同可以视作同一种情况,利用二维数组进行存储)记忆化递归应用题目:1、卡特兰数:题目均需利用卡特兰数的递推公式或动态规划思想求解。nnn01n2、路径计算问题:需用动态规划(DP)处理网格中的障碍物限制。n3、背包问题:涵盖子集和、01背包、完全背包等经典变种。

2025-03-26 14:37:22 378

原创 每日一题--LeetCode59:螺旋矩阵II

而赋值时不能使用nums【i】【j】,此时节点的位置是最中心节点的左上角的那个节点,要么调整为nums【i+1】【j+1】(存在疑问,gpt说的是会是最外圈的左上角或者右上角,但是不太能理解呢,这个调整的方法,会使数组溢出,好像是不对的),要么写成nums【n/2】【n/2】1、找到每次旋转循环中的变量和不变量:变量就是offset,每循环一圈加1,使循环进入内圈;不变量就是每条边上的处理方法,当边长为n时,处理n-1个节点,剩下的那个节点给下一条边进行处理。

2025-02-20 11:49:23 92

原创 每日一题--LeetCode209:长度最小的子数组

2、最后return语句不可写成return result,因为有时会有大小不满足target的长度,直接返回result的话会返回INT_MAX,可长度并不是INT_MAX,应该写成return result==INT_MAX?0:result,进行判断后,将长度转换成不满足条件的0.1、j<nums.size()这里不可写成j<=nums.size(),否则会使数组越界造成报错。从算法随想录up主那里学习到了滑动窗口的方法,受益匪浅,话不多说,上原码!

2025-02-20 10:34:28 183

原创 每日一题--LeetCode 155最小栈

解法一:使用辅助栈存储最小元素。解法二:自定义Stack。

2025-02-19 11:26:36 60

原创 伙伴公式求伙伴地址理解

伙伴系统的 公式部分 涉及 地址取余 是为了 快速确定 一个空闲块与其 伙伴块 之间的关系。具体原因和原理如下:伙伴系统的 公式部分 涉及 地址取余 是为了 快速确定 一个空闲块与其 伙伴块 之间的关系。具体原因和原理如下:1. 为什么要取余?取余是通过数学关系 快速判断块与伙伴块的位置,而不是直接去查找或扫描整个内存。• 通过对地址 取模 2^{k+1} (即块大小的2倍),可以区分当前块和伙伴块是前后关系还是并列关系。• 这个操作能够 避免大量的搜索,提高分配和合并效率。

2024-12-18 14:18:48 280

原创 分区、分卷和分盘的联系和区别

分区、分卷 和 分盘 是存储设备(如硬盘)管理中的概念,它们有一定的联系和区别,分别用于组织和管理存储空间,使存储设备更高效地使用。关系 分盘上的逻辑划分单元 基于分区的抽象,可以组合多个分区形成一个卷 存储设备,是分区和分卷的基础。• C:、D:、E: 分别是分卷,每个分卷可以对应磁盘的一个分区或多个分区的组合。级别 硬盘的逻辑划分 分区的抽象和组合,可以是单个或多个分区 最底层的硬件级别。• 分盘 是存储的基础,分区 划分空间,分卷 对分区进行进一步抽象和管理。

2024-12-17 11:21:15 556

原创 使用链表二路归并的注意事项及代码实现

使用快慢指针法寻找中间链表节点:但是要注意初始化fast的方式,如过将fast和slow都初始化为head的话容易使链表分割不均匀然后导致栈溢出。 确保链表被均匀分割:空链表和单节点链表: 3. 正确切断链表分割时切断链表: 在找到中间节点后,需要将链表切断,确保左半部分和右半部分独立。 4. 正确地合并两个有序链表 合并函数的实现: 附链表二路代码

2024-12-12 17:45:25 506

原创 如何理解操作系统内存管理中的链接

• 链接器会检查程序中用到的 printf,在标准库(如 libc.a 或 libc.so)中找到它的实现,并将 main.o 和 libc 合并,生成最终的可执行文件。• 目标文件:编译器会将源代码(如 .c 文件)编译成目标文件(如 .o 文件或 .obj 文件),目标文件中包含了机器指令和未解析的符号。• 库文件:常见的静态库(如 .a 或 .lib 文件)和动态库(如 .so 或 .dll 文件),它们包含了可以被程序使用的函数和变量。• 符号:程序中的函数、变量或其他标识符称为符号。

2024-11-24 21:11:52 548

原创 ROM和RAM的区别

用途 存储临时数据和程序运行时的中间结果 存储固件(如BIOS)或设备的操作指令。RAM(随机存取存储器)和ROM(只读存储器)是两种计算机存储器,各自有不同的特点和用途。运行速度提升:RAM越大,程序运行越流畅,尤其是大型软件(如游戏或图像处理软件)。提供设备初始化功能:如电视、洗衣机等嵌入式设备启动时,读取的程序常存储在ROM中。临时存储程序和数据:当计算机运行软件或处理任务时,所有数据都会存储在RAM中。存储固件:比如计算机的启动程序(BIOS)或嵌入式设备的操作系统。

2024-11-23 21:50:26 1786

原创 Verilog 数据输入的规范及相关注意事项

在 Verilog 中,常量的表示和赋值遵循特定的格式和规范,主要用于定义数据的位宽、进制和数值。以下是 Verilog 常量表示的详细讲解,以及如何正确输入和处理数据。如果未指定位宽,Verilog 默认常量的位宽为。常量的数值必须符合定义的进制范围,否则会报错。如果未指定进制,默认认为是十进制。在 Verilog 的。

2024-11-23 21:24:46 645

原创 利用栈的树的前中后序遍历

后序遍历比较复杂,因为需要保证左右子树都被访问后再访问根节点。通常有两种方法:一种是通过栈的两次遍历,另一种是通过栈的标记机制。

2024-11-21 22:34:00 167 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除