- 博客(198)
- 收藏
- 关注
原创 单调栈通用思路
单调栈本质是用栈来维护一组**【有单调关系的已遍历元素】**。它的核心作用是:在遍历过程中,通过栈顶元素和当前元素的对比,快速找到「之前元素」和「当前元素」的大小关系,从而高效解决「下一个更大 / 更小元素」这类问题。
2025-08-10 10:52:54
247
原创 力扣-二叉树-101 对称二叉树
分解问题为,该节点的左孩子的左子树和右孩子的右子树是不是同一棵树 && 该节点的左孩子的右字数和右孩子的左子树是不是同一课树 && 该节点的左右孩子的值相不相同。
2025-05-11 16:24:46
300
原创 力扣-链表-2 两数相加
两个指针同时遍历,维护一个进位值,同时还要维护第一个链表的前序,如果第二个链表比第一个长的时候,利用这个前序指针把第二个链表多余的内容,添加到第一个链表的末尾。
2025-05-04 16:51:56
283
原创 面试手撕——迭代法中序遍历二叉树
访问顺序和处理顺序不一致导致迭代法难写,体现在总要先遍历根节点,才能访问左右孩子,用null标记,null标记的节点表示已经访问过了,下一次可以处理,所以在当前栈顶节点不是null的时候,都要进行入栈,由于是左根右的处理顺序,所以压栈的时候要右根左压栈。
2025-05-01 22:17:27
328
原创 力扣-数组-238 除自身以外数组的乘积
题目也提示了,记录前缀乘积和后缀乘积即可,主要是数组定义prefixi表示从0到i−1的前缀乘积和,所以prefixinumsi−1∗prefixi−1,同理后缀乘积也需要定义好数组意义。
2025-04-30 15:22:38
619
原创 力扣-链表-25 k个一组翻转链表
分解任务,先找到这k个一组的链表数据,保证start指向第一个要翻转的数据,end指向最后一个要翻转的数据,提前记录好这k个一组的前一个节点和后一个节点,也就是整体的pre和next,翻转之后pre指向翻转后返回头节点,初始的头start指向整体的next,最后接着维护pre和end。
2025-04-30 10:32:17
311
原创 面试手撕——快速排序
partition方法将整个区间分为两部分,一部分比pivot小,一部分比pivot大,i表示,小于等于pivot的下标,j表示当前遍历到哪一个元素了,如果发现当前元素j小于等于pivot,i++,在i+1的位置和 j 交换位置,最后还要将pivot放在i + 1的位置,也返回i + 1,此时 数组被分成了两部分,pivot左边的,都比pivot小,右边的都比pivot大。
2025-04-29 20:55:37
1056
原创 力扣-单调栈-42 接雨水
两个数组的建立是,然后遍历求当前雨水高度时,如果呈现U字形,在底部正中央需要遍历所有元素,在偏离两侧的节点中,会逐渐减少,应该是小于。
2025-03-09 21:44:03
411
原创 力扣-动态规划-115 不同子序列
在该元素相同时,有两种可能1:使用该元素,所以0_i-2中有多少个0_j-2,这样再加上i-1和j-1,这满足了0_i-1的字符串中有0_j-1的字符串;第二种可能,不使用该元素,直接看0_i-2的字符串中有0_j-1的字符串 不相同时,只能不用i-1,要跳过i-1,所以沿用前一个结果。
2025-03-04 20:20:02
219
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人