自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2026.3.24 接雨水 & 柱状图

【代码】2026.3.24 接雨水 & 柱状图。

2026-03-24 13:52:18 37

原创 2026.03.24 每日温度1 & 下一个更大元素1 & 2

【代码】2026.03.24 每日温度1 & 下一个更大元素1 & 2。

2026-03-24 11:55:45 40

原创 2026.03.23 最长递增子序列 & 最长连续递增序列 & 最长公共子序列

思路:维护一个数组group,group[i]代表长度i的子序列的结尾,迭代时外层循环0-n,内层循环j替换,找到第一个大于等于它的。对于不要求连续的子序列,dp代表的都是以nums[i]结尾的最长值。

2026-03-24 00:01:09 62

原创 2026.3.22 回文子串

【代码】2026.3.22 回文子串。

2026-03-22 16:39:10 34

原创 2026.03.22 不同的子序列 & 两个字符串的删除操作 & 编辑距离

【代码】2026.03.22 不同的子序列 & 两个字符串的删除操作 & 编辑距离。

2026-03-22 00:43:38 32

原创 2026.3.19 不相交的线 & 最大子数组和

【代码】2026.3.19 不相交的线 & 最大子数组和。

2026-03-19 17:40:58 38

原创 2026.3.18 买卖股票的最佳时机4 & 含冷冻期 & 含手续费

本文介绍了三种股票买卖问题的动态规划解法:1) 限制交易k次的最大利润,使用buyList和sellList数组记录状态转移;2) 含冷冻期的情况,通过hold、sold、ready三个状态表示不同阶段;3) 含手续费的情况,仅需hold和sell两个状态。所有解法都采用动态规划思想,通过状态转移方程计算最优解,时间复杂度均为O(n)。其中冷冻期问题需要额外考虑状态转移条件,而手续费问题则在交易时直接扣除费用。

2026-03-18 23:28:54 31

原创 2026.3.11 零钱兑换2 &

【代码】2026.3.11 零钱兑换2 &

2026-03-11 17:03:09 32

原创 2026.3.9 不同路径1 & 2 & 分割等和子集

【代码】2026.3.9 不同路径1 & 2 & 分割等和子集。

2026-03-09 23:11:46 51

原创 2026.3.7 买卖股票的最佳时机 1 & 2 & 3

【代码】2026.3.7 买卖股票的最佳时机 1 & 2 & 3。

2026-03-07 17:02:28 50

原创 2026.3.5 打家劫舍 1 2 3

【代码】2026.3.5 打家劫舍 1 2 3。

2026-03-05 17:15:44 33

原创 2026.3.3 完全平方数

【代码】2026.3.3 完全平方数。

2026-03-03 14:22:36 175

原创 2026.3.1 目标和 & 最后一块石头的重量2 & 一和零

【代码】2026.3.1 目标和 & 最后一块石头的重量2 & 一和零。

2026-03-01 17:24:12 205

原创 2026.2.23 单调递增的数字 & 监控二叉树

【代码】2026.2.23 单调递增的数字 & 监控二叉树。

2026-02-24 15:24:14 148

原创 2026.2.18 无重点区间 & 划分字母区间 & 合并区间

【代码】2026.2.18 无重点区间 & 划分字母区间 & 合并区间。

2026-02-18 16:48:42 212

原创 2026.02.11

【代码】2026.02.11。

2026-02-17 16:28:19 124

原创 2026.2.9 K次取反最大数组和 & 加油站 & 分发糖果

【代码】2026.2.9 K次取反最大数组和 & 加油站 & 分发糖果。

2026-02-09 21:19:18 219

原创 2026.02.05 (贪心)买卖股票2 & 跳跃游戏 1 & 2

【代码】2026.02.05 (贪心)买卖股票2 & 跳跃游戏 1 & 2。

2026-02-05 23:48:32 244

原创 2026.02.01 n皇后 & 解数独

【代码】2026.02.01 n皇后 & 解数独。

2026-02-05 23:37:23 414

原创 2026.02.02 摆动序列 & 最大子数组和

【代码】2026.02.02 摆动序列 & 最大子数组和。

2026-02-02 20:30:26 133

原创 2026.1.31 非递减子序列

树层去重:一个used_level局部变量,记录当前层的数据哪些是用过,避免同一层出现相同的节点导致重复,使用set或哈希,用值作为索引。树枝去重:一个used全局变量,记录哪些是当前path使用过的数据,需要回溯,索引和原数组相同。# 实现无序列表的层级去重。

2026-01-31 14:45:38 133

原创 2026.1.29 复原ip地址 & 子集 & 子集2

这里用回溯和dp都能做,在实际算法中,回溯更偏向于搜索所有路径,dp更偏向于找出最优解。

2026-01-29 20:09:21 166

原创 2026.1.23 组合总和 & 组合总数3 & 分割回文串

【代码】2026.1.23 组合总和 & 组合总数3 & 分割回文串。

2026-01-26 18:11:19 48

原创 2026.01.22 组合 &

【代码】2026.01.22 组合 &

2026-01-22 20:23:18 38

原创 2026.1.21 修剪二叉搜索树 & 将有序数组转换成二叉搜索树 & 把二叉搜索树转换为累加树

【代码】2026.1.21 修剪二叉搜索树 & 将有序数组转换成二叉搜索树 & 把二叉搜索树转换为累加树。

2026-01-21 20:12:29 54

原创 2026.1.2 删除二叉搜索树中的节点

【代码】2026.1.2 删除二叉搜索树中的节点。

2026-01-02 17:09:34 182

原创 2025.12.18 二叉搜索树中的众数 & 二叉搜索树中的众数

从低向上遍历,如果目标子节点分别在左右子树中,当前节点为公共祖先。如果当前节点是目标子节点,且另一个目标子节点在左子树或右子树中,则当前节点是公共祖先。方法一:二叉搜索树中序遍历是有序数组,遍历过程中记录出现怨怒是出现的次数。find_node返回目标子节点是否在当前子树中。方法二:直接计数,排序。

2025-12-18 17:15:50 154

原创 2025.12.15 验证二叉搜索树 & 二叉搜索树的最小绝对差

设置两个阈值,遍历每个节点的时候,单独判断当前节点是否在阈值区间内,初始阈值为无穷小和无穷大,左子树收缩右值,右子树收缩左值。收缩的值为当前节点的值。中序遍历在二叉搜索树中十分重要,对二叉搜索树中序遍历,可以获得一个有序数组。

2025-12-15 18:11:44 183

原创 2025.10.02 合并二叉树 & 二叉搜索树中的搜索

【代码】2025.10.02 合并二叉树 & 二叉搜索树中的搜索。

2025-10-02 17:51:12 207

原创 2025.09.30 根据中序后序遍历构建二叉树 & 最大二叉树

3. 根据中序遍历数组中root节点的绝对索引值,计算出左右子树的大小,在后序遍历数组中切割,获得左右子树对应的后序遍历数组。当前节点的左子树在当次迭代中确定,循环弹出栈顶元素,直到找到栈顶最后一个小于当前节点值的元素,将其作为左子树。节点的右子树在之后的遍历迭代中确定,在迭代的过程,栈顶元素若大于当前节点的值,则将当前节点复制给栈顶右子树。1. 先用dic记录中序遍历数组的映射,方便快速找到root节点对应的绝对索引。2. 中序遍历中root节点左边的是左子树的中序遍历,右边是右子树的中序遍历。

2025-09-30 13:15:43 251

原创 2025.09.28 左叶子之和

更方便的方法:从右到左层序遍历,最后一个节点就是最底层左节点。层序遍历,找到最后一层的最左节点。

2025-09-28 15:47:53 157

原创 2025.09.26 完全二叉树的节点数 & 平衡二叉树 & 二叉树的所有路径

对于完全二叉树的节点数,可以使用公式计算 2 ** height + 1,利用左子树和右子树的高度比较来判断哪个子树是完全二叉树。后序遍历 + 剪枝,若任一子树中出现不平衡的情况,则返回 -1,终止迭代。

2025-09-26 17:19:49 620

原创 2025.09.17 翻转二叉树 & 对称二叉树 & 二叉树的最大深度

【代码】2025.09.17 翻转二叉树 & 对称二叉树 & 二叉树的最大深度。

2025-09-17 18:01:21 214

原创 2025.09.15 二叉树的前/中/后/层序遍历

【代码】2025.09.15 二叉树的前/中/后/层序遍历。

2025-09-15 12:50:10 183

原创 2025.09.09 前k个高频元素

方法3:快速排序,当选中元素经过快排程序之后,若是正好位于k-1的位置,则前k个元素已经找到;若是 i < k-1 则需要在数组 i 位置的后面迭代快排;若是 i > k - 1 则需要在数组 i 位置的前面迭代。方法2:用堆的方式,维护一个大小为k的小顶堆,每次push进一个元素,pop出一个最小的元素。实现方式1:使用 heapq.nlargest(k, []) 函数。方法1:用python3的 collections 模块。实现方式2:使用 heapq 手动维护堆。

2025-09-09 14:22:28 175

原创 2025.09.08 逆波兰表达式求值 & 滑动窗口的最大值

用栈,如果是数字则压栈,如果是运算符,则用栈顶的两个数字计算。python3中的 // 是向下取整,而不是向0取整,所以需要先用浮点算完之后转为 int 值。python3中没有方法判断一个字符串是否会合法整数,本题除了字符就是数字不用判断,python中判断字符串为合法整数的方法是用 try-except。单调队列,维护一个单调递减的队列,需要判断队头是否过期。这里用栈+左右指针模拟了双端队列。

2025-09-08 15:12:57 254

原创 2025.09.05 用队列实现栈 & 有效的括号 & 删除字符串中的所有相邻重复项

关键在于入栈,q1作为存储队列,q2作为压栈操作队列,先将元素压入q2,再按顺序将q1的元素转移到q2,同时交换q1,q2 的引用。3. deque在单线程中效率高,有多样的操作(在两端进行添加(2. queue的效率比较慢,操作只能是先进先出。1. queue是多线程安全的,deque不是。用栈的方式判断括号是否合法。) 操作时,时间复杂度为。

2025-09-05 16:15:39 351

原创 2025.09.01 重复的子串 & 用栈实现队列

若一个字符串能够被其子串重复多次构成,则说明该串循环右移小于len次,可以等于原串。代码上的实现,扩展两倍str = s + s,去除首尾字符,判断str是否包含s。用KMP算法,求next数组。

2025-09-01 16:36:10 161

原创 2025.08.24 路径加密 & 动态口令 & KMP

python中字符串类型是不可变类型,当需要对字符串进行原地修改操作时,需要提前转化为list。前缀:包含首字母不包含尾字母的所有子串;后缀:包含尾字母不包含首字母的所有子串。或者也可以使用双端队列,但是涉及到更多的数据类型转换,所以速度会慢一点。构建next数组从1开始,因为s[0] = 0,首字符不存在前后缀。KMP算法,解决字符串匹配的问题。object:找到最长相等前后缀。匹配的时候从0开始遍历。

2025-08-24 14:45:07 245

原创 2025.08.21 四数之和 & 翻转字符串1&2

剪枝:若当前最小的四个数相加大于target,则结束循环;若当前遍历的数,加上最大的数小于target,则直接进入下一次循环。思路和三数之和一样,多套一层循环,再利用左右指针遍历。相关的切片操作:s[start:end:step]

2025-08-21 13:20:30 213

空空如也

空空如也

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

TA关注的人

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