↓ 跳过正文
  1. 科学/
  2. 计算机/
  3. 算法/

Leetcode

  • TODO: 完成 300 道题 2026-09-08 16:41

感觉 200 ~ 300 题有些杂乱,bfs() 还是有几个,也有了前缀树等。

  • TODO: 完成 200 道题 2026-09-06

大致建立了递归思想,每一层递归进去后出来的追踪,用来解决 dfs() 这一类的题;
对于 DP,要新建一维二维或者更高维的信息真值表,用来标记信息;
节点的创建,树的一些操作。

一些标记 1 ~ 100 题目比较杂,有链表,双指针,dfs等

100 ~ 114 左右是二叉树,对二叉树的一些操作,遍历,转化,平衡,深度,路径。
前序 + 中序 -> 二叉树
中序 + 后序 -> 二叉树
数组 -> 二叉树
链表 -> 二叉树
平衡二叉树

115 子序列

140 又是链表

175 后几个题操作 sql

190 位操作

191 反码补码获取最低为 1

192 ~ 195 bash 脚本

198 又回到递归了,以前耳闻的 “打家劫舍”

199 是二叉树,二叉树反复出现啊

  • TODO 200 2026-09-06 13:38

感觉 200 题后开始有劲啦 😢

200 岛屿数量,以前看到过视频

202 快乐数,以前也看过

203 又到了链表,移除

204 205 对字符操作

206 反转链表,在这里消耗了好些时间,原因是自己对链表还是很陌生,总是把 .next 看成下一个节点的开始,但是这样理解起来很费劲,当把 .next 看成当前节点的后面部分就好理解了。创建哑节点,dummay,当把一个节点插入时,先备份这个节点后面跟的节点地址,用 nxt 标记, 然后把哑节点后面跟的地址赋给这个节点后面要跟的地址,刚开始 dummy.next 为 None。 然后就把这个节点赋给哑节点后面要跟的地址,接着就把之前备份的当前节点的下一个地址标记为当前节点 curr 。就这样重复进行。

208 前缀树,没有当前字母时,新建 26 个节点

209 也是使用前缀和,用函数 accumulate(nums, initial=0) 自动前 N 项相加。

210 课程表 2 ,忘了之前哪个题是课程表 1 了。

211 添加和搜索单词,使用数据结构设计。

212 构建前缀树 + 之前岛屿数量的思想。

213 打家劫舍 2 。

214 最短回文串,使用正向逆向哈希,$prefix_i = prefix_{i-1} * base + v_i$ ,$suffix_i = suffx_{i-1} + v_i + basse_i$ 。

215 使用递归,寻找中间值,然后 l, r 依次与之比较,也可以使用 nlargest(k, nums)[-1] 直接尾递归,有也可以使用统计出现的次数。

216 组合总和,多重递归,太难推了,只能往前最多看三层啊,就行象棋一样 🥲 。但也有方法不用递归 😅 。

217 存在重复元素,可以先 sort() 后用 pairwise() 两两比较。也可以将列表转为 set(),如果有重复元素就会去掉,然后再将 set() 的长度和 list 的长度比较。这些想法太牛了 😸 。

218 天际线问题,二维数组有点难跟踪啊,跟踪了一会还是没有思路。

219 存在重复元素 2 ,新建字典 d{},每次选素循环判断是否在字典内,不在就存进字典,在的话就比较字典内元素索引值是否小于等于 k 。

221 最大正方形,使用 DP,创建 DP 数组用来标记每个元素的信息。

222 完全二叉树的节点个数。使用递归。

224 基础计算器,大脑不在状态啊。

225 用队列实现栈。

226 翻转二叉树。

227 又是计算器的实现。

228 汇总区间,之前也遇到过区间汇总的题目,暂时先不调试了。

229 众数求和 2 。

230 二叉搜索树第 k 个小的元素,从左递归到右递归查找叶子节点,然后找到叶子节点后将 k 值减 1,当 k = 0 时则为第 k 个最小元素。

231 2 的幂,n & (n -1) 去掉 n 最右边的 1 。

232 用栈实现队列,与 225 题相反。

233 1 的个数。

234 回文链表,又是链表,昨天才在理清头插法 🙄 。

235 236 是二叉树,求最近公共祖先。

237 链表节点删除。

238 数组的乘机。

239 最大滑动窗口。

  • todo: 2026-09-07 20:19 明天看看能否看到 270 。

240 搜索二维矩阵。

241 为运算符设计优先级。

242 有效的字母异位词。

243 最短单词距离。

244 最短单词距离 2 。

245 最短单词距离 3 。

246 247 248 中心对称数。

249 移位字符串分组。

250 统计同值子树。

252 253 会议室。253 使用查分。

254 因子组合。

255 验证二叉搜索树的前序遍历序列。

256 粉刷房子。

257 二叉树所有路径。

258 各位相加。

259 最小三数之和。

260 只出现一次的数字,xs & -xs 取出最低位 1,其余置零,记得之前有一个题用到了这个方法,而 n & (n - 1) 则为清楚最右边第一个 1 。这两个位操作要记住。

261 以图判树。又到了没有状态的时间了 😪 。之前的题目应该有图的吧,忘了怎么创建图了。

262 又到了操作数据库的题了。

263 丑数,之前好像也看到视频的吧?!! 难度为简单,但是自己从零思考真的能想出来吗?

264 丑数 2 ,创建一个列表一个字典来存储。

265 粉刷房子 2 。

266 回文排列,使用 Counter() 统计单词出现次数,然后 % 1,偶数为 0,奇数为 1,求和是否小于 2 。

267 回文排列 2。

268 丢失的数字,使用位操作。

269 火星词典。

270 最接近的二叉搜索树值。递归,只要有树就首先想到递归啊。

271 字符串的编码与解码。

272 最接近的二叉搜索树值 II 。dfs() 真的疲惫了,我说的是对 dfs 疲惫了,晚上睡不着就看 dfs 吧 😿 。

273 整数转换英文表示。感觉和转换罗马数逻辑差不多的吧,怎么代码那么多?!!< _ <

274 H 指数,先降序排序,然后从后面索引,看当前索引值是否小于等于排序数组 [当前索引 -1 ] 的值。第二种方法创建 cnt[] 数组来存储的信息是什么呢?关于数组索引让我眼花缭乱,就像在追踪变量一样。第三种解法就不发表想法了。

275 H 指数,也是先排序,然后使用二分。。

276 栅栏涂色,创建两个数组 f[] 和 g[] 维护状态,至于为什么状态是那样转移我就不清楚了。第二种解法是使用 for 循环。

277 搜寻名人,模拟 know api,然后使用两个 for() 循环,来将当前 i 和 ans 作为数组索引来判断 know api 数组值是真是假。

278 第一个错误的版本,之前有题是比较版本号。使用二分的思想。

279 完全平方数,DP,先开根,然后创建 n + 1 列和 m + 1 行数组用来维护状态信息,然后依次从行列循环更新状态。另一个方法使用一维数组进行维护。

280 摆动排序,从索引 1 开始,判断当前索引是奇数还是偶数,如果是奇数看当前索引值是否小于前一个索引值,是就交换这两个数字,如果当前索引是偶数,就判断当前索引值是否大于前一个索引值,是就交换这两个数。

281 锯齿迭代器,之前有锯齿变换,好像是链表。还有一个 Z 字形变换。

282 给表达式添加运算符。dfs(),两层条件进入递归,第二层依次进入三次递归。

283 移动零,使用变量 k 标记 0 前边不为 0 的个数。当当前索引值不为零是,就交换当前 [索引值]和 [索引为 k] 的值。

284 窥视迭代器,又是迭代器,暂且不跟踪了。

285 二叉搜索树中的中序后继,BST 的操作,之前哪个题也是 BST 操作去了? ❓

286 墙与门,是不是 dfs() 都用递归,bfs() 都用 while + for ?I Don’t Know !^_^

287 查找重复数,这两个式子看懂了就简单了,bisect.bisect_left(range(len(nums)), True, key=f) ,sum(v <= x for v in nums) > x 。

288 单词的唯一缩写。

289 生命游戏,DP,并且有四层 for(),赶紧撤退 🤣 。

290 单词规律,求解方法和之前哪个题目有点像,创建字典 da{} 和 db{} ,并且单词不在字典就加入,da{} 和 db{} 键值对反过来,如果当前键已经存在,就看值是否相等,相等继续,不相等返回 False 。请记住 zip() 函数。

291 单词规律 2 ,使用 dfs() 还有栈就知道这个题不简单。

292 Nim 游戏,取模判断当前值是否是 4 的倍数,是就返回 False ,不是就返回 True 。

293 翻转游戏,按顺序两两反转后,加入 ans[] ,然后再还原,再依次两两翻转加入 ans[] ,依次循环。

294 翻转游戏 2 ,使用了记忆化缓存,dfs() 。

295 数据流的中位数,使用 headp 。初始化大堆小堆。

296 最佳的碰头地点。通过行列遍历找到 grip[] 元素为 1 的,然后将行列索引保存,循环完之后给保存的列索引排序,然后再 sum(abs(v - x) for v in arr) 。

297 二叉树的序列化与反序列化,二叉树的先让我省省心吧,PASS ~~ 。

298 二叉树最长连续序列,DFS() ,有关连续序列这些记得用 dfs() 。

299 猜数字游戏。

  • 300 题 2026-09-08 16:38 😝

300 最长递增子序列,用 i 标记当前状态数组索引,然后 j 依次从 0 到当前 i ,再来比较 原数组 i 和 原数组 j 的大小,num[j] < num[i] 就更新 f[i] 的状态值。第二种方法便是使用树状数组。

301 删除有效括号,先计算出匹配左右括号,是( 则 l + 1 ,是 ) 则 r + 1,并且 r + 1 前先判断是否存在 l,存在则 l - 1 。处理好 l 和 r 后便进入递归,dfs() 。

302 包含全部黑色像素的最小矩形。

303 区域和检索 - 数组不可变。

304 二维区域和检索 - 矩阵不可变。

305 岛屿数量 2 。

306 累加数。

307 区域和检索 - 数组可修改。303 304 都是区域和检索。

308 二维区域和检索 - 矩阵可修改。

309 买卖股票的最佳时机含冷冻期。

310 最小高度树。

311 稀疏矩阵的乘法,矩阵是自己的一大灾难啊, 😢 。

312 戳气球。

313 超级丑数。

314 二叉树的垂直遍历。

315 计算右侧小于当前元素的个数。

316 去除重复字母。

317 离建筑物最近的距离。

322 零钱兑换,DP 一维背包。

323 无向图中连通分量的数目,又来图了。

325 和等于 k 的最长子数组长度。

326 3 的幂。

353 贪吃蛇。

385 迷你语法分析器。

0300-0399
0200-0299
0001-0099
0100-0199