- 博客(294)
- 问答 (7)
- 收藏
- 关注
原创 leetcode 912 排序数组 堆排序
自底向上调整:**从右到左,从下到上,依次调用 heapify 函数,**确保每个子树都满足最大堆的性质。核心 heapify 操作:比较父节点和它左右子节点的值,如果父节点不是最大的,就把它和最大的子节点交换。缩小堆范围:将堆的大小减 1(相当于把最大的那个数移出堆,放在数组末尾)。(不再调整数据末尾的数)重新调整:对新的堆顶元素(索引 0)调用 heapify ,把剩下的 n-1 个元素重新调整成最大堆。建好最大堆后,数组的第一个元素(索引 0)(树顶)就是当前的最大值。
2026-06-02 18:23:33
209
原创 leetcode hot100 寻找两个正序数组的中位数 hard 二分查找 双指针
时间复杂度 O(m+n), 不符合题目 O(log (m+n)) 要求。线性扫描 → 时间复杂度 O(m+n),空间复杂度O(1)时间复杂度O(log (m+n))把指针推进到总数一半位置。
2026-04-29 20:45:10
51
原创 leetcode 92. 反转链表 II 区间反转(不是整条链表反转)
【代码】leetcode 92. 反转链表 II 区间反转(不是整条链表反转)
2026-04-28 16:18:04
69
原创 leecode 179. 最大数 medium
是一个适配器,把自定义的“两两比较逻辑”,转换成 Python 3 能够识别的格式。直接用sort的时间复杂度:就是O(n log n)
2026-04-27 20:18:46
52
原创 leetcode hot100 64. 最小路径和 medium 递归优化
dfs(i, j) = 从 (0,0) 走到 (i,j) 的最小路径和。时间复杂度:O(m × n)空间复杂度:O(m × n)
2026-04-26 22:21:20
61
原创 leetcode hot100 1143. 最长公共子序列 mediuim 递归优化
每个算一次:状态数 = m × n , 时间复杂度 = O(m × n)空间复杂度 O(m × n)
2026-04-26 22:06:34
57
原创 leetcode hot100 5. 最长回文子串 中心扩展法 medium
所以可以:以每个位置为中心,向两边扩展,看看能扩多长。👉 最终结果:“bab” 或 “aba”
2026-04-26 21:27:22
68
原创 leetcode hot100 416. 分割等和子集 medium 动态规划 01背包 DFS深度优先搜索
问题本质:每个数都有两种选择:选 / 不选。时间复杂度:O(2^n)python 缓存装饰器。
2026-04-26 20:19:26
65
原创 leetcode hot100 300. 最长递增子序列 medium 动态规划
dp[i] 表示 以 nums[i] 结尾的最长递增子序列长度。时间复杂度:O(n²)空间复杂度:O(n)
2026-04-25 19:50:35
66
原创 leetcode hot100 118. 杨辉三角 easy 动态规划
第 4 行:[1, 4, 6, 4, 1]中间元素 = 上一行左上 + 上一行右上。第 3 行:[1, 3, 3, 1]每一行的第一个和最后一个元素都是 1。第 2 行:[1, 2, 1]第 1 行:[1, 1]
2026-04-25 19:34:02
62
原创 leetcode 70. 爬楼梯 easy 动态规划 斐波那契数列
最后一步是 1 阶 → 前面已经爬到第 n-1 阶 → 有 f(n-1) 种方法。最后一步是 2 阶 → 前面已经爬到第 n-2 阶 → 有 f(n-2) 种方法。f(1) = 1 (只有 1 阶 → 只有 1 种方法)f(2) = 2 (两阶 → 1+1 或 2)空间复杂度:O(n)(递归栈)时间复杂度:O(2^n)时间复杂度:O(n)空间复杂度:O(1)
2026-04-25 19:25:51
63
原创 121. 买卖股票的最佳时机 easy 贪心算法
只要历史最低买入点没变,卖出价格增加时利润只会增大或者不变。空间复杂度:O(1),只用两个变量存储状态。时间复杂度:O(n),只遍历一次数组。买入点一旦确定,卖出价格越高利润越大。
2026-04-25 18:50:29
79
原创 leetcode hot100 215. 数组中的第K个最大元素 medium 堆 快速选择 pivot分区
最坏情况:O(n²)(但可通过随机化 pivot 避免),取决于排序算法(如快排、归并排序)空间复杂度:O(1)(原地修改数组)class中自己调自己,用self.暴力解法:排序后取第K个。平均时间复杂度:O(n)
2026-04-25 17:49:12
62
原创 leetcode hot100 394. 字符串解码 medium 栈 单栈模拟法
时间复杂度O(N):虽然有嵌套的 while,但每个字符最多进栈出栈两次。空间复杂度O(N):用于存储栈内的中间结果。N为解码后字符串长度。
2026-02-26 20:23:30
100
原创 leetcode hot100 155. 最小栈 medium
对于栈的所有操作,其时间复杂度都是 常数级 的。,当 push 一个元素时:栈顶 = 当前最小值。在“新来的数”和“旧的最小值”比较,只压入最小值。全部 O(1) 时间复杂度。
2026-02-26 19:53:06
321
原创 leetcode hot100 20. 有效的括号 easy 栈
空间复杂度:O(n):最坏情况下(比如全部是左括号 ((((((),需要把所有字符都存入栈中。时间复杂度O(n):只遍历了字符串一次,入栈和出栈的操作都是。
2026-02-26 19:29:37
59
原创 leetcode hot100 153. 寻找旋转排序数组中的最小值 medium 二分查找
由于 mid 是向下取整,mid == right 只会在 left == right 时发生。此时返回 ans 是正确的。的前提下,nums[mid] == nums[right] 只有一种情况会发生:就是 mid == right。(比如 LeetCode 154 题) return ans 就会提前收工,导致错误。🚩 潜在的问题:else: return ans。时返回mid坐标,找不到结束循环时,是。时,让循环继续,则结束循环时,是。
2026-02-25 18:31:37
287
1
原创 leetcode hot100 33. 搜索旋转排序数组 medium 二分查找
尽管逻辑多了一层判断,但依然每次排除了数组的一半。例如:[4,5,6,7,0,1,2]然后判断 target 在哪一侧。数组原本有序,但被旋转。只使用了常数个指针变量。
2026-02-25 11:24:40
70
原创 leetcode hot100 34. 在排序数组中查找元素的第一个和最后一个位置 二分查找 medium
在普通的二分查找中, 一旦 nums[mid] == target 就直接 return,这样只能找到“某一个 target”,ans 则为-1(找不到),或为最左、最右坐标。这题中,要修改为:返回值ans初始值 -1。两次完整的二分查找。这是一个 找左右边界 的问题。只用了几个指针变量。
2026-02-25 11:07:48
104
原创 leetcode hot100 74. 搜索二维矩阵 二分查找 medium
这意味着:整个矩阵如果按行“拉直”,是一个严格递增的一维数组。不需要真的展开数组,只需要“映射索引”。时间复杂度 O(log(mn))所以可以直接用 二分查找。空间复杂度:O(1)
2026-02-25 10:35:28
134
原创 leetcode hot100 35. 搜索插入位置 medium 二分查找
【代码】leetcode hot100 35. 搜索插入位置 medium 二分查找。
2026-02-24 20:58:42
93
原创 leetcode hot100 79. 单词搜索 medium 递归回溯
是 Python 集合的并集运算符,表示把 tmp 和 {(i,j)} 合并成一个新的集合。暂时把当前格子变成一个“不可能匹配任何字符”的值,防止下一层递归再次走回这个格子。那后面从别的起点开始搜索时,这个格子永远是 #,会破坏搜索。已经没有下一个字符需要匹配了,之前所有字符都匹配成功。因为一旦找到答案,搜索立刻终止,后续路径不再执行。为什么这样就不会超时?
2026-02-21 01:19:01
632
原创 leetcode hot100 22. 括号生成 medium 递归回溯
在每一层递归中,tmp + “(” 会创建一个新的字符串。由于是深度优先搜索(DFS),内存中在同一时刻只会存在从根节点到当前节点的一条路径上的字符串。每层 2 个分支 → 完全二叉树大小 = 2^(2n) = 4^n。总结:严格来说,时间复杂度是有效组合数乘以生成每个组合的代价。生成的序列数量:生成的所有合法括号组合的数量正是第。字符串操作开销:在每一条有效路径的末尾,执行了。但通常在面试中,回答其复杂度与卡特兰数成正比,较大时,根据斯特林公式近似,它的量级约为。递归栈深度 = 2n → O(n)
2026-02-20 23:48:37
377
原创 leetcode hot100 39. 组合总和 medium 递归回溯
在 Python 中,+ 拼接列表和 [:] 切片都会创建一个新列表,时间复杂度为。是所有可行解组合的总长度。在 LeetCode 的约束下,这通常是可接受的。这意味着每一轮递归都多出了一个。假设在递归的每一层都选择了数组中的最小值。分支因子 (Width),每一层最多有。每层会创建新的切片列表:最长为。新的 tmp 路径列表:最长为。
2026-02-20 23:30:57
328
原创 leetcode hot100 46. 全排列 medium 递归回溯 dfs
在 Python 中,path 是一个列表对象(引用)。如果不使用切片 [:] 拷贝一份副本,最终 res 里的所有元素都会指向同一个被清空的 path 对象。回溯的核心在于:尝试选择 -> 递归进入下一层 -> 撤销选择(回退)。,且需要 used 数组和 path 数组。的时间复制到结果集中。
2026-02-20 20:04:41
146
原创 leetcode hot100 208. 实现 Trie (前缀树) medium 从二叉树到二十六叉树
当我们要存储 “cat” 和 “car” 这两个单词时,它们都以 “ca” 开头。Trie 会把公共前缀 “c” 和 “a” 共享,然后从 ‘a’ 节点分叉,一个指向 ‘t’,一个指向 ‘r’。这样不仅节省了存储空间,查询时也只需要沿着路径走一遍。Trie,也叫前缀树或字典树,是一种专门用来高效处理字符串的数据结构。假设在 Trie 中只插入了一个单词:apple。
2026-02-17 01:12:06
69
原创 leetcode hot100 207. 课程表 检测有向图中是否存在环 medium Kahn 算法 入度表 BFS 图论
如果有环(比如 A 依赖 B,B 依赖 C,C 又依赖 A),无法毕业。如果在递归过程中,发现下一个节点在递归栈中(正在访问中),则找到了环。是先修关系的数量(prerequisites 的长度)。这个图是不是一个有向无环图(DAG)?是课程总数(numCourses),例如: 修完B可以修[A,C],,把题目全部放入队列。
2026-02-16 19:33:58
386
原创 leetcode hot100 994. 腐烂的橘子 medium bfs
DFS 是一条路走到黑。而这道题要求的是**“最小分钟数”,这本质上是在求最短路径/层数**,是 BFS。时间复杂度:O(mn),其中 m 和 n 分别为 grid 的行数和列数。先把网格里所有腐烂的橘子坐标都放进一个。这就是“层序遍历”:每一分钟就是 BFS 的一层。空间复杂度:O(mn)。
2026-02-16 17:46:36
116
原创 leetcode hot100 200. 岛屿数量 medium dfs
DFS 过程:虽然每个 ‘1’ 都会触发 DFS,注意:每个格子最多只会被访问两次(一次是在双重循环扫描时,另一次是在 DFS 感染时被标记为 ‘0’)。一旦格子被标记为 ‘0’,它就再也不会进入 DFS 的逻辑。空间开销主要来自递归调用的系统栈高度。最坏情况:如果整个网格全是陆地(全为 ‘1’),DFS 会从一个点开始感染。在递归过程中,由于是深度优先,系统栈的深度可能会达到整个网格的大小。遍历过程:需要使用双重循环遍历整个网格的每一个格子,这部分是。,这样最后统计出来的不是“岛屿的数量”,而是。
2026-02-16 16:45:02
110
原创 leetcode ho100 124. 二叉树中的最大路径和 hard
空间复杂度:O(n)。最坏情况下,二叉树退化成一条链,递归需要 O(n) 的栈空间。时间复杂度:O(n),其中 n 为二叉树的节点个数。
2026-02-15 23:51:07
88
原创 leetcode hot100 236.二叉树的最近公共祖先 medium dfs 递归
不存在,或者它们是树中最深的叶子节点),我们需要遍历二叉树中的每一个节点。每个节点只会被访问一次。在每个节点上,我们只进行了常数时间的逻辑判断(判断是否等于。在 DFS 回溯的过程中,每个节点都向它的父节点汇报情况:“我这棵子树里有没有发现。最好情况:当二叉树是完全平衡的,树的高度。最坏情况:当二叉树退化成一个链表(高度。此时递归深度最小,空间复杂度为。,以及合并左右子树的汇报结果)。在最坏的情况下(比如目标节点。)时,递归的深度会达到。
2026-02-15 23:23:05
118
原创 leetcode hot100 437. 路径总和 III medium 前缀和 DFS
哈希表记录:使用一个哈希表,存储当前路径上所有出现过的前缀和,及其出现的次数。如果树中全是正数,前缀和是严格递增的,确实不会重复。所以需要一个哈希表,记录:当前路径上所有出现过的前缀和,及其出现的次数。,哈希表在最坏情况下(树呈链状)需要存储。问题转换为:检查当前节点。,每个节点仅遍历一次。
2026-02-15 22:55:01
294
空空如也
tensorflow 1.x 如何改为 2.x model 的序列模型呢
2021-07-03
tensorflow 网络层 tf.matmul 是什么层呢
2021-07-01
devc++ 断点无效
2021-01-20
specgram函数画不出频域,是没有信息吗
2020-08-26
tsfresh版本与numpy,mxnet版本冲突问题
2020-08-10
新手提问 thresholdpip在哪个库里有呢,为啥安装不上?
2020-06-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅