自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第十二天 | 二叉树01

看完本篇可以一口气刷十道题,试一试, 层序遍历并不难,大家可以很快刷了十道题。需要了解 二叉树的种类,存储方式,遍历方式 以及二叉树的定义。这是统一迭代法的写法, 如果学有余力,可以掌握一下。二叉树的三种递归遍历掌握其规律后,其实很简单。迭代遍历 (基础不好的录友,迭代法可以放过)统一迭代 (基础不好的录友,迭代法可以放过)递归遍历 (必须掌握)

2025-02-09 17:18:28 130

原创 代码随想录算法训练营第十一天 | 150. 逆波兰表达式求值 , 239. 滑动窗口最大值,347.前 K 个高频元素(栈与队列02)

寻找前k个最大元素流程如图所示:(图中的频率只有三个,所以正好构成一个大小为3的小顶堆,如果频率更多一些,则用这个小顶堆进行扫描)

2025-02-09 17:15:17 755

原创 代码随想录算法训练营第十天 | 232.用栈实现队列 , 225. 用队列实现栈 ,20. 有效的括号,1047. 删除字符串中的所有相邻重复项 (栈与队列01)

C++优化代码。

2025-02-06 18:40:41 650

原创 代码随想录算法训练营第九天 | 151.翻转字符串里的单词,卡码网:55.右旋转字符串,28. 实现 strStr(),459.重复的子字符串(字符串02)

说到KMP,先说一下KMP这个名字是怎么来的,为什么叫做KMP呢。因为是由这三位学者发明的:Knuth,Morris和Pratt,所以取了三位学者名字的首字母。所以叫做KMP写过KMP的同学,一定都写过next数组,那么这个next数组究竟是个啥呢?next数组就是一个前缀表(prefix table)。前缀表有什么作用呢?前缀表是用来回退的,它记录了模式串与主串(文本串)不匹配的时候,模式串应该从哪里开始重新匹配。

2025-02-05 08:26:46 539

原创 代码随想录算法训练营第八天 | 344.反转字符串, 541. 反转字符串II,卡码网:54.替换数字(字符串01)

其实在遍历字符串的过程中,只要让 i += (2 * k),i 每次移动 2 * k 就可以了,然后判断是否需要有反转的区间。对于字符串,我们定义两个指针(也可以说是索引下标),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。相信大家本着我所讲述的原则来做字符串相关的题目,在选择库函数的角度上会有所原则,也会有所收获。这道题目还是比较简单的,但是我正好可以通过这道题目说一说在刷题的时候,使用库函数的原则。本着这样的原则,我没有使用reverse库函数,而使用swap库函数。

2025-02-04 21:48:45 1008

原创 代码随想录算法训练营第七天 | 454.四数相加II ,383. 赎金信 , 15. 三数之和 , 18. 四数之和 (哈希表02)

在关于哈希表,你该了解这些!中,我们介绍了哈希表的基础理论知识,不同于枯燥的讲解,这里介绍了都是对刷题有帮助的理论知识点。一般来说哈希表都是用来快速判断一个元素是否出现集合里。对于哈希表,要知道哈希函数和哈希碰撞在哈希表中的作用。哈希函数是把传入的key映射到符号表的索引上。哈希碰撞处理有多个key映射到相同索引上时的情景,处理碰撞的普遍方式是拉链法和线性探测法。数组set(集合)map(映射)

2025-02-03 17:29:30 647

原创 代码随想录算法训练营第六天 | 哈希表理论基础 ,242.有效的字母异位词 ,349. 两个数组的交集 , 202. 快乐数, 1. 两数之和 (哈希表01)

总结一下,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。如果在做面试题目的时候遇到需要判断一个元素是否出现过的场景也应该第一时间想到哈希法!

2025-02-02 19:58:01 911

原创 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交,142.环形链表II(链表02)

题目链接:24.两两交换链表中的节点使用虚拟头结点,接下来就是交换相邻两个元素了,此时一定要画图,不画图,操作多个指针很容易乱,而且要操作的先后顺序初始时,cur指向虚拟头结点,然后进行如下三步: 操作之后,链表如下: 看这个可能就更直观一些了: 时间复杂度:O(n)LeetCode 19.删除链表的倒数第N个节点 题目链接:19.删除链表的倒数第N个节点 双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slo

2025-01-30 22:29:17 578

原创 代码随想录算法训练营第三天 | 203.移除链表元素,707.设计链表 ,206.反转链表(链表01)

/ 单链表int val;// 节点上存储的元素// 指向下一个节点的指针ListNode(int x) : val(x), next(NULL) {} // 节点的构造函数注:如果不定义构造函数使用默认构造函数的话,在初始化的时候就不能直接给变量赋值!需要先循环找到尾部节点再插入// 在链表最后面添加一个节点_size++;

2025-01-29 06:54:57 1050

原创 代码随想录算法训练营第二天 | 209.长度最小的子数组,59.螺旋矩阵II,区间和,开发商购买土地 (数组02)

题目链接:209.长度最小的子数组滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。在暴力解法中,是一个for循环滑动窗口的起始位置,一个for循环为滑动窗口的终止位置,用两个for循环 完成了一个不断搜索区间的过程。那么滑动窗口如何用一个for循环来完成这个操作呢。首先要思考 如果用一个for循环,那么应该表示 滑动窗口的起始位置,还是终止位置。如果只用一个for循环来表示 滑动窗口的起始位置,那么如何遍历剩下的终止位置?此时难免再次陷入 暴力解法的怪圈。所以 只用一个for循环

2025-01-28 09:10:19 652

原创 代码随想录算法训练营第一天 | 704. 二分查找,27. 移除元素,977.有序数组的平方 (数组01)

数组中的元素不能删除,只能覆盖。LeetCode 704. 二分查找一般分为两种:左闭右闭 [ left,right ];左闭右开 [ left,right)注意左闭右开版本中对 right 的初始化。LeetCode 27.移除元素双指针法(快慢指针法):LeetCode 977.有序数组的平方。

2025-01-22 23:01:53 223

原创 【洛谷】P1321单词覆盖还原

洛谷刷题小解

2023-04-27 22:23:48 644 2

原创 【洛谷】P3741 honoka的键盘

这题WA好几遍才通过,想一想自己的思路确实有问题,下定决心写记录来提醒自己。

2023-04-26 16:15:42 492 3

空空如也

空空如也

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

TA关注的人

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