/LeetCode.cn-Record

本项目用于记录个人LeetCode刷题代码,采用python语言,代码包含一定注释

Primary LanguagePythonMIT LicenseMIT

LeetCode Personal Record

Introduction

本项目用于记录个人LeetCode刷题代码,采用python语言,代码包含一定注释

AcWing分类法Record

基础算法

leetcode题目 Python代码 难度
(前缀和+归并排序)327. 区间和的个数 count-of-range-sum 困难
(排序+双指针)1. 两数之和 two-sum 简单
(类似高精度加法)2. 两数相加 add-two-numbers 简单
(双指针+哈希)3. 无重复字符的最长子串 longest-substring-without-repeating-characters 中等
(归并**)4. 寻找两个正序数组的中位数 median-of-two-sorted-arrays 困难
(排序)581. 最短无序连续子数组 shortest-unsorted-continuous-subarray 中等
(双指针)11. 盛最多水的容器 container-with-most-water 中等
(排序+哈希+双指针)15. 三数之和 3sum 中等
(归并**)21. 合并两个有序链表 merge-two-sorted-lists 简单
(排序+双指针or排序+二分)611. 有效三角形的个数 valid-triangle-number 中等
(矩阵前缀和+二分or线性dp)221. 最大正方形 maximal-square 中等
(二分)33. 搜索旋转排序数组 search-in-rotated-sorted-array 中等
(二分)34. 排序数组找元素第一和最后一个位置 find-first-and-last-pos-of-elemt-in-sorted-arr 中等
(单指针)42. 接雨水 trapping-rain-water 中等
(排序+哈希or字符集编码)49. 字母异位词分组 group-anagrams 中等
(区间合并)56. 合并区间 merge-intervals 中等
(排序or荷兰国旗问题)75. 颜色分类 sort-colors 中等
(双指针模拟滑动窗口)76. 最小覆盖子串 minimum-window-substring 困难
(单指针)457. 环形数组是否存在循环 circular-array-loop 中等
(单调栈or分治+递归)84. 柱状图中最大的矩形 largest-rectangle-in-histogram 困难
(单调栈)85. 最大矩形 maximal-rectangle 困难
(前缀和+二分)528. 按权重随机选择 random-pick-with-weight 中等
(差分)1109. 航班预订统计 corporate-flight-bookings 中等

数据结构

leetcode题目 Python代码 难度
(堆or线性dp)32. 最长有效括号 longest-valid-parentheses 困难
(大小根堆)295. 数据流的中位数 find-median-from-data-stream 困难

leetcode题目 Python代码 难度
20. 有效的括号 valid-parentheses 简单

堆优化

leetcode题目 Python代码 难度
1801. 积压订单中的订单总数 number-of-orders-in-the-backlog 中等
(堆排序)23. 合并K个升序链表 merge-k-sorted-lists 困难
313. 超级丑数 super-ugly-number 中等
(堆排序or哈希)128. 最长连续序列 longest-consecutive-sequence 中等
(堆排序)面试题 17.14. 最小K个数 smallest-k-lcci 中等

搜索与图论

DFS

leetcode题目 Python代码 难度
51. N 皇后 n-queens 困难
17. 电话号码的字母组合 letter-combinations-of-a-phone-number 中等
22. 括号生成 generate-parentheses 中等
39. 组合总和 combination-sum 中等
46. 全排列 permutations 中等
78. 子集 subsets 中等
79. 单词搜索 word-search 中等
98. 验证二叉搜索树 validate-binary-search-tree 中等
(DFS递归or队列迭代)101. 对称二叉树 symmetric-tree 简单
102. 二叉树的层序遍历 binary-tree-level-order-traversal 中等
105. 从前序与中序遍历序列构造二叉树 construct-binary-tree-from-preorder-and-inorder-traversal 中等
114. 二叉树展开为链表 flatten-binary-tree-to-linked-list 中等
124. 二叉树中的最大路径和 binary-tree-maximum-path-sum 困难
797. 所有可能的路径 all-paths-from-source-to-target 中等

拓扑排序

leetcode题目 Python代码 难度
(深搜or拓扑)802. 找到最终的安全状态 find-eventual-safe-states 中等

最短路

leetcode题目 Python代码 难度
(朴素dijkstraorSPFA)743. 网络延迟时间 network-delay-time 中等
(bellman_ford)787. K 站中转内最便宜的航班 cheapest-flights-within-k-stops 中等

最小生成树

leetcode题目 Python代码 难度
1489. 找到最小生成树里的关键边和伪关键边 find-critical-and-pseudo-critical-edges-in-minimum-spanning-tree 困难

数学知识

快速幂

leetcode题目 Python代码 难度
(矩阵快速幂or线性DPor记忆化DP)552. 学生出勤记录 II student-attendance-record-ii 困难

动态规划

线性DP

leetcode题目 Python代码 难度
10. 正则表达式匹配 regular-expression-matching 困难
53. 最大子序和 maximum-subarray 简单
(素朴DPor01背包DPor数学)62. 不同路径 unique-paths 中等
64. 最小路径和 minimum-path-sum 中等
72. 编辑距离 edit-distance 困难
96. 不同的二叉搜索树 unique-binary-search-trees 中等

区间DP

leetcode题目 Python代码 难度
5. 最长回文子串 longest-palindromic-substring 中等
516. 最长回文子序列 longest-palindromic-subsequence 中等

计数类DP

leetcode题目 Python代码 难度
70. 爬楼梯 climbing-stairs 简单
446. 等差数列划分 II - 子序列 arithmetic-slices-ii-subsequence 困难

数位统计DP

leetcode题目 Python代码 难度
233. 数字 1 的个数 number-of-digit-one 困难

状态压缩DP

leetcode题目 Python代码 难度
(状压DPorBFS求不带权图Hamilton最短路)847. 访问所有节点的最短路径 shortest-path-visiting-all-nodes 困难
(状压DPorDFS)526. 优美的排列 beautiful-arrangement 中等

记忆化搜索

leetcode题目 Python代码 难度
329. 矩阵中的最长递增路径 longest-increasing-path-in-a-matrix 困难
576. 出界的路径数 out-of-boundary-paths 中等
1646. 获取生成数组中的最大值 get-maximum-in-generated-array 简单

贪心

leetcode题目 Python代码 难度
1509. 三次操作后最大值与最小值的最小差 minimum-difference-between-largest-and-smallest-value-in-three-moves 中等
55. 跳跃游戏 jump-game 中等
881. 救生艇 boats-to-save-people 中等

旧分类法Record

基础数学

leetcode题目 Python代码 难度
231. 2 的幂 power-of-two 简单
342. 4的幂 power-of-four 简单
168. Excel表列名称 excel-sheet-column-title 简单
1137. 第 N 个泰波那契数 n-th-tribonacci-number 简单
(曼哈顿距离)789. 逃脱阻碍者 escape-the-ghosts 中等

进阶数学

leetcode题目 Python代码 难度
483. 最小好进制 smallest-good-base 困难

算法

leetcode题目 Python代码 难度
(Boyer-Moore 投票算法)面试题 17.10. 主要元素 find-majority-element-lcci 简单
(扫描线)218. 天际线问题 the-skyline-problem 困难

区间合并

leetcode题目 Python代码 难度
1893. 检查是否区域内所有整数都被覆盖 check-if-all-the-integers-in-a-range-are-covered 简单

排序

leetcode题目 Python代码 难度
274. H 指数 h-index 中等
(排序or二分)275. H 指数 II h-index-ii 中等
1846. 减小和重新排列数组后的最大元素 maximum-element-after-decreasing-and-rearranging 中等
面试题 10.02. 变位词组 group-anagrams-lcci 中等
1337. 矩阵中战斗力最弱的 K 行 the-k-weakest-rows-in-a-matrix 简单

二分

leetcode题目 Python代码 难度
面试题 17.08. 马戏团人塔 circus-tower-lcci 中等
354. 俄罗斯套娃信封问题 russian-doll-envelopes 困难
(二分+回溯+剪枝)1723. 完成所有工作的最短时间 find-minimum-time-to-finish-all-jobs 困难
1482. 制作 m 束花所需的最少天数 minimum-number-of-days-to-make-m-bouquets 中等
(哈希+二分)981. 基于时间的键值存储 time-based-key-value-store 中等
剑指 Offer 53 - I. 在排序数组中查找数字 I zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof 简单
(哈希+贪心+二分)1713. 得到子序列的最少操作次数 minimum-operations-to-make-a-subsequence 困难
704. 二分查找 binary-search 简单

链表

leetcode题目 Python代码 难度
160. 相交链表 intersection-of-two-linked-lists 简单
203. 移除链表元素 remove-linked-list-elements 简单
剑指 Offer 52. 两个链表的第一个公共节点 liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof 简单
138. 复制带随机指针的链表 copy-list-with-random-pointer 中等
19. 删除链表的倒数第 N 个结点 remove-nth-node-from-end-of-list 中等
剑指 Offer 22. 链表中倒数第k个节点 lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof 简单

数组和字符串

leetcode题目 Python代码 难度
674. 最长连续递增序列 longest-continuous-increasing-subsequence 简单
1128. 等价多米诺骨牌对的数量 number-of-equivalent-domino-pairs 简单
724. 寻找数组的中心索引 find-pivot-index 简单
665. 非递减数列 non-decreasing-array 简单
978. 最长湍流子数组 longest-turbulent-subarray 中等
832. 翻转图像 flipping-an-image 简单
7. 整数反转 reverse-integer 简单
9. 回文数 palindrome-number 简单
784. 字母大小写全排列 letter-case-permutation 中等
1720. 解码异或后的数组 decode-xored-array 简单
1486. 数组异或操作 xor-operation-in-an-array 简单
1734. 解码异或后的排列 decode-xored-permutation 中等
1310. 子数组异或查询 xor-queries-of-a-subarray 中等
12. 整数转罗马数字 integer-to-roman 中等
13. 罗马数字转整数 roman-to-integer 简单
1442. 形成两个异或相等数组的三元组数目 count-triplets-that-can-form-two-arrays-of-equal-xor 中等
1738. 找出第 K 大的异或坐标值 find-kth-largest-xor-coordinate-value 中等
692. 前K个高频单词 top-k-frequent-words 中等
810. 黑板异或游戏 chalkboard-xor-game 困难
461. 汉明距离 hamming-distance 简单
477. 汉明距离总和 total-hamming-distance 中等
1744. 你能在最喜欢那天吃到最喜欢糖果吗? can-you-eat-your-favorite-candy-on-your-favorite-day 中等
278. 第一个错误的版本 first-bad-version 简单
374. 猜数字大小 guess-number-higher-or-lower 简单
852. 山脉数组的峰顶索引 peak-index-in-a-mountain-array 简单
401. 二进制手表 binary-watch 简单
剑指 Offer 15. 二进制中1的个数 er-jin-zhi-zhong-1de-ge-shu-lcof 简单
451. 根据字符出现频率排序 sort-characters-by-frequency 中等
645. 错误的集合 set-mismatch 简单
1736. 替换隐藏数字得到的最晚时间 latest-time-by-replacing-hidden-digits 简单
171. Excel表列序号 excel-sheet-column-number 简单
202. 快乐数 happy-number 简单
48. 旋转图像 rotate-image 中等
121. 买卖股票的最佳时机 best-time-to-buy-and-sell-stock 简单
413. 等差数列划分 arithmetic-slices 中等
551. 学生出勤记录 I student-attendance-record-i 简单
345. 反转字符串中的元音字母 reverse-vowels-of-a-string 简单
541. 反转字符串 II reverse-string-ii 简单
443. 压缩字符串 string-compression 中等
1480. 一维数组的动态和 running-sum-of-1d-array 简单
1588. 所有奇数长度子数组的和 sum-of-all-odd-length-subarrays 简单
165. 比较版本号 compare-version-numbers 中等
剑指 Offer 10- I. 斐波那契数列 fei-bo-na-qi-shu-lie-lcof 简单
1221. 分割平衡字符串 split-a-string-in-balanced-strings 简单

leetcode题目 Python代码 难度
872. 叶子相似的树 leaf-similar-trees 简单
993. 二叉树的堂兄弟节点 cousins-in-binary-tree 简单
208. 实现 Trie (前缀树) implement-trie-prefix-tree 中等
1707. 与数组中元素的最大异或值 maximum-xor-with-an-element-from-array 困难
1600. 皇位继承顺序 throne-inheritance 中等
剑指 Offer 37. 序列化二叉树 xu-lie-hua-er-cha-shu-lcof 困难
1104. 二叉树寻路 path-in-zigzag-labelled-binary-tree 中等
987. 二叉树的垂序遍历 vertical-order-traversal-of-a-binary-tree 困难
94. 二叉树的中序遍历 binary-tree-inorder-traversal 简单
104. 二叉树的最大深度 maximum-depth-of-binary-tree 简单

哈希表

leetcode题目 Python代码 难度
888. 公平的糖果棒交换 fair-candy-swap 简单
554. 砖墙 brick-wall 中等
421. 数组中两个数的最大异或值 maximum-xor-of-two-numbers-in-an-array 中等
560. 和为K的子数组 subarray-sum-equals-k 中等
1074. 元素和为目标值的子矩阵数量 number-of-submatrices-that-sum-to-target 困难
523. 连续的子数组和 continuous-subarray-sum 中等
525. 连续数组 contiguous-array 中等
149. 直线上最多的点数 max-points-on-a-line 困难
1418. 点菜展示表 display-table-of-food-orders-in-a-restaurant 中等
1711. 大餐计数 count-good-meals 中等
1818. 绝对差值和 minimum-absolute-sum-difference 中等
1743. 从相邻元素对还原数组 restore-the-array-from-adjacent-pairs 中等
1583. 统计不开心的朋友 count-unhappy-friends 中等

双指针

leetcode题目 Python代码 难度
424. 替换后的最长重复字符 longest-repeating-character-replacement 中等

滑动窗口

leetcode题目 Python代码 难度
(大小根堆)480. 滑动窗口中位数 sliding-window-median 困难
(双左指针)992. K个不同整数的子数组 subarrays-with-k-different-integers 困难
(哈希or双左指针)930. 和相同的二元子数组 binary-subarrays-with-sum 中等
1838. 最高频元素的频数 frequency-of-the-most-frequent-element 中等

并查集(图)

leetcode题目 Python代码 难度
959. 由斜杠划分区域 regions-cut-by-slashes 中等
1579. 保证图可完全遍历 remove-max-number-of-edges-to-keep-graph-fully-traversable 困难
1631. 最小体力消耗路径 path-with-minimum-effort 中等
778. 水位上升的泳池中游泳 swim-in-rising-water 困难
839. 相似字符串组 similar-string-groups 困难

动态规划

leetcode题目 Python代码 难度
1473. 粉刷房子 III paint-house-iii 困难
198. 打家劫舍 house-robber 中等
740. 删除并获得点数 delete-and-earn 中等
300. 最长递增子序列 longest-increasing-subsequence 中等
1269. 停在原地的方案数 number-of-ways-to-stay-in-the-same-place-after-some-steps 困难
1035. 不相交的线 uncrossed-lines 中等
664. 奇怪的打印机 strange-printer 困难
1787. 使所有区间的异或结果为零 make-the-xor-of-all-segments-equal-to-zero 困难
(类似01背包问题)474. 一和零 ones-and-zeroes 中等
(转背包问题)494. 目标和 target-sum 中等
(转背包)1049. 最后一块石头重量 II last-stone-weight-ii 中等
(动规最和恰好的定义)879. 盈利计划 profitable-schemes 困难
518. 零钱兑换 II coin-change-2 中等
(包含个数学定理)279. 完全平方数 perfect-squares 中等
1449. 数位成本和为目标值的最大数字 form-largest-integer-with-digits-that-add-up-to-target 困难
486. 预测赢家 predict-the-winner 中等
(含数学)877. 石子游戏 stone-game 中等
1239. 串联字符串的最大长度 maximum-length-of-concat-str-with-unique-characters 中等
剑指 Offer 42. 连续子数组的最大和 lian-xu-zi-shu-zu-de-zui-da-he-lcof 简单

贪心

leetcode题目 Python代码 难度
1353. 最多可以参加的会议数目 maximum-number-of-events-that-can-be-attended 中等
1833. 雪糕的最大数量 maximum-ice-cream-bars 中等
1877. 数组中最大数对和的最小值 minimize-maximum-pair-sum-in-array 中等

leetcode题目 Python代码 难度
1190. 反转每对括号间的子串 reverse-substrings-between-each-pair-of-parentheses 中等
(栈+哈希)726. 原子的数量 number-of-atoms 困难

自动机

leetcode题目 Python代码 难度
65. 有效数字 valid-number 困难

搜索

leetcode题目 Python代码 难度
(广度)752. 打开转盘锁 open-the-lock 中等
(广度)773. 滑动谜题 sliding-puzzle 困难
(广度)909. 蛇梯棋 snakes-and-ladders 中等
(建图+广度)815. 公交路线 bus-routes 困难
(广、深、动规)LCP 07. 传递信息 chuan-di-xin-xi 简单
(广or深)671. 二叉树中第二小的节点 second-minimum-node-in-a-binary-tree 简单
(邻接表+DFS)863. 二叉树中所有距离为 K 的结点 all-nodes-distance-k-in-binary-tree 中等

C++标准库方法

leetcode题目 Python代码 难度
31. 下一个排列 next-permutation 中等
剑指 Offer 38. 字符串的排列 zi-fu-chuan-de-pai-lie-lcof 中等

周赛

leetcode题目 Python代码 难度
5809. 长度为 3 的不同回文子序列 unique-length-3-palindromic-subsequences 中等