- 博客(24)
- 收藏
- 关注
原创 代码随想录算法训练营第28天 | 122.买卖股票的最佳时机II、 55. 跳跃游戏、45.跳跃游戏II、 1005.K次取反后最大化的数组和
终于自己写出一些题目来了。配合ChatGPT一起写真的会有奇效,大家一定要善用AI。
2024-12-11 21:06:04
217
原创 代码随想录算法训练营第一天 |93.复原IP地址、78.子集、90.子集II
这是选择子集的问题,需要收集所有路径的节点,而不只是叶子节点。这题好难,怎么也想不明白,所以就先跳过。
2024-12-07 16:37:30
184
原创 代码随想录算法训练营第23天|39. 组合总和、40.组合总和II、131.分割回文串
回溯的关键是如何保存状态。现在需要用到更多成员变量来保存状态了。
2024-12-05 20:10:40
223
原创 代码随想录算法训练营第一天 |669. 修剪二叉搜索树、 108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
一定要熟悉树的遍历,这很重要,是关于树的算法的最根本的基础。
2024-12-03 20:36:41
238
原创 代码随想录算法训练营第一天 | 235. 二叉搜索树的最近公共祖先、 701.二叉搜索树中的插入操作、 450.删除二叉搜索树中的节点
逻辑过于复杂,不太清楚怎么插入树的节点,有空补一下相关知识。使用的是和普通最近公共祖先一样的方法,暂时mark。迭代遍历寻找合适的插入位置,然后进行插入操作,具体代码如下。
2024-12-02 21:44:03
233
原创 代码随想录算法训练营第一天 | 654.最大二叉树、 617.合并二叉树、 700.二叉搜索树中的搜索、98.验证二叉搜索树
合并树如何合并是一个难点,验证二叉树搜索树一定要充分利用其特性,栈的遍历不太熟悉,需加强练习。
2024-12-02 12:21:03
190
原创 代码随想录算法训练营第16天 |找树左下角的值、112. 路径总和、113. 路径总和ii、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树
如果涉及回溯的话,某种情况下也能够用栈来实现,但是栈如何记录信息是一个难点,需要多多思考。关于树的构建,我们需要清楚如何寻找头节点,以及如何切割左右子树,知道这两点的话就足够了。
2024-12-02 10:07:35
250
原创 代码随想录算法训练营第一天| 226.翻转二叉树、101. 对称二叉树、104.二叉树的最大深度、 111.二叉树的最小深度
在求与深度相关的问题的时候,请优先考虑层序遍历。
2024-11-29 10:07:04
135
原创 代码随想录算法训练营第15天| 110.平衡二叉树、 257. 二叉树的所有路径、404.左叶子之和、 222.完全二叉树的节点个数
对于树的节点的操作,中心思想就是一边遍历一边做逻辑操作,逻辑操作放在什么位置很关键,而树的遍历方法似乎并不太需要关注。
2024-11-27 15:02:58
316
原创 代码随想录算法训练营第一天 |144二叉树的前序遍历、94二叉树的中序遍历、145二叉树的后序遍历、102二叉树的层序遍历、107二叉树的层序遍历II、199二叉树的右视图
模拟递归的时候请多多使用栈,可以节省很多内存。在树的层次遍历的时候,一定要把队列中弹出的队首元素的左右子节点都入队,否则无法完全遍历。
2024-11-25 22:32:39
173
原创 代码随想录算法训练营第11天 |150. 逆波兰表达式求值、滑动窗口最大值、前 K 个高频元素
对于滑动窗口,可以使用单调队列O(n)的时间复杂度,对于排序问题,可以使用优先队列O(logn)的时间复杂度。
2024-11-24 22:14:04
252
原创 【无标题】代码随想录算法训练营第10天 | 232.用栈实现队列、 225. 用队列实现栈、20. 有效的括号、1047. 删除字符串中的所有相邻重复项
对于符号匹配问题,使用栈或有奇效。
2024-11-24 21:55:13
316
原创 代码随想录算法训练营第9天|151.翻转字符串里的单词、55.右旋转字符串
字符串基本可以看成数组来处理,只不过数组元素存的是数字,字符串存的的字符,能够利用的算法大纲是基本相同的。
2024-11-21 22:12:46
204
原创 代码随想录算法训练营第一天|344.反转字符串、541. 反转字符串II、卡码网:54.替换数字
遍历字符串,主要是逻辑判断,利用string的加法运算符即可,代码如下.利用双指针,将两个指针同时向中间靠拢即可,较为简单,代码如下。逻辑判断很重要,适当用一下代码库的排序算法并无大碍,代码如下.
2024-11-20 22:21:08
255
原创 代码随想录算法训练营第7天|454.四数相加II、383. 赎金信
另一个较为巧妙地方法就是统计两个字符串各个字母的个数,如果ransomNote的某个字母的个数比magazine的同一个字母个数更多,那就说明magazine永远不可能构成ransomNote了,立即返回false即可,如果没有发现这种情况出现的话,就返回truee,即magazine可以构成ransomNote。,变成这种情况就会好理解好多,我们可以利用集合进行“推断”来解决,代码如如下。,乍看之下好像需要四重循环,实则并不需要,做一个简单的变换,要寻找共有多少个元组。
2024-11-19 21:55:26
884
原创 代码随想录算法训练营第6天| 242.有效的字母异位词、 349. 两个数组的交集、 202. 快乐数、1. 两数之和
对一些可能无法同时出现的元素或者相互排斥的元素 ,可以考虑使用哈希表。
2024-11-18 22:45:19
957
原创 代码随想录算法训练营第4天|24. 两两交换链表中的节点、 19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II
需要了解两件事情,如何确定位置信息和如何交换链表节点。另一个方法就是利用快慢指针,快指针每次移动两步,慢指针每次移动一步,如果有环,快指针必定先到达环内,并且当慢指针也进入环内之后,快指针将会以步长为1的相对速度追上慢指针,快慢指针必定会相遇。:利用双指针法(快慢指针)确定位置信息,具体为利用快指针从虚拟头节点开始先遍历N+1次节点,之后再让慢指针从虚拟头节点开始遍历,并且快指针继续遍历下去,当快指针到达nullptr之后就表明慢指针已经到达了待删除结点的前一个位置,此时进行删除操作即可,代码如下。
2024-11-17 11:12:12
196
原创 代码随想录第3天| 203.移除链表元素、707.设计链表、206.反转链表
链表基础:链表在内存空间中稀疏分布,通过指针进行连接,因此没办法使用索引进行读写,只能通过遍历来进行读写。
2024-11-17 10:30:32
213
原创 代码随想录训练营第二天|209长度最小的子数组、59螺旋矩阵、区间和
上述代码,我们首先寻找能够满足区间和大于target的窗口,如果满足要求,则逐步减小窗口,看是否能够满足长度最短,如果在缩小窗口的过程中无法再满足大于tartget的条件了,那么就扩大窗口。本题关键在于理清楚一个数字n需要旋转多少轮,以及如何计算每一轮的横向运动步数和纵向运动步数,另外,在最后的收尾时n为奇数和偶数的时候有一些细微的差别。最短子数组:可用滑动窗口做,所谓滑动窗口就是维护一段符合要求的数组区间,本题的要求就是数组区间的和需要大于target,在此之上再选择长度最短的区间。滑动窗口的代码如下。
2024-11-14 22:46:08
281
原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素
接着是双指针法,双指针法的核心思想就是,在遍历的时候,快指针每次遇到待删除元素的时候就等待一次,然后让快指针继续前进一次,表示跳过待移除的元素(跳过意味着删除),如果在遍历的时候,还没有遇到待移除元素,就把快指针位置上的元素复制到慢指针的位置上,完整遍历一遍之后就可以实现移除元素了。移除元素:数组的元素存储在一片连续的地址上,这已经是最紧凑的存储方式了,因此如果要删除元素的话就没有那么简单,每次删除一个元素,为了维护数组的紧凑性,我们需要把被删除的元素的后面部分移前一次。采用左闭右闭区间的解法如下。
2024-11-13 18:08:05
229
1
原创 C语言中double和float的区别
double为双精度浮点数:用它来定义变量时,占用8个字节即64bits;float为单精度浮点数:用它来定义变量时,占用4个字节即32bits。注意:在格式化输出时,double类型需要用%lf来作为占位符;而float则需要用%f来作为占位符,否则无法正确输出。今天刚学了一些C语言的基础,在此发博客记录一下。
2023-08-25 17:08:13
1027
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅