leetcode刷题记录

以下题目github答案链接

# Title Solution Backup level rewatch
1 二叉树的前序遍历 Python 递归方法简单,迭代方法需牢记(栈) 中等
2 二叉树的中序遍历 Python 递归方法简单,迭代方法需牢记(颜色标记法、栈) 中等
3 二叉树的后序遍历 Python 递归方法简单,迭代方法需牢记(栈+结果反转)/颜色标记法 中等
4 剑指 Offer 33. 二叉搜索树的后序遍历序列 Python 递归分治、辅助单调栈(看不太懂) 中等
5 求根到叶子节点数字之和 Python dfs/bfs 中等
6 二叉树的层次遍历 Python 队列 中等
7 二叉树的层次遍历II Python 队列 中等
8 二叉树的右视图 Python 层次遍历 中等
9 二叉树的层平均值 Python 层次遍历 简单
10 N叉树的层序遍历 Python 层次遍历 中等
11 翻转二叉树 Python/java 递归 简单
12 二叉树的锯齿形层次遍历 Python 层次遍历(队列) 中等
13 二叉搜索树迭代器 Python 基于中序遍历 中等 再看
14 合并两个有序链表 Python 简单
15 合并两个链表 Python 中等
16 反转链表 Python 简单
17 合并K个升序链表 Python 分治(归并) 困难 其实很简单,先拆分成单个,然后两个两个合并即可,再看下吧
18 二叉树中的最大路径和 Python 递归,注意返回值为root.val+max(l,r) 困难 比较简单,再看下吧
19 从前序与中序遍历序列构造二叉树 Python 递归 中等
20 二叉搜索树节点最小距离 Python 中序遍历 简单
21 二叉搜索树的最小绝对差 Python 中序遍历 简单 和上个题是同一个题
22 实现Trie前缀树 Python 前缀树 中等 再看
23 两两交换链表中的节点 Python 中等 做过相似的题目,感觉不难,可以再看下
24 递增顺序搜索树 Python 中序遍历 简单
25 二叉搜索树的范围和 Python 中序遍历 简单
26 二叉树的直径 Python 求顶点数量-1更简洁些 简单
27 填充每个节点的下一个右侧节点指针 Python 借助next指针/层次遍历 中等 再看下吧
  1. 数组
# Title Solution Backup level rewatch
1 搜索插入位置 Python 关于while(left < right) 还是 while(left <= right),到底是right = middle呢,还是要right = middle - 1问题的思考. 优秀解答链接 简单 回顾对开闭区间的理解
2 长度最小的子数组 Python 滑动窗口 中等
3 岛屿的周长 Python 迭代/dfs/bfs 简单 看下,尤其是最简单的迭代
4 螺旋矩阵 II Python 模拟 中等
5 O(1) 时间插入、删除和获取随机元素 - 允许重复 Python 数组+哈希表 困难 再看
6 单词拆分 II Python 记忆化搜索 困难 再看
7 有效的山脉数组 Python 遍历 简单
8 插入区间 Python 数组合并 困难 再看
9 买卖股票的最佳时机II Python 遍历 简单
10 距离顺序排列矩阵单元格 Python 曼哈顿距离 简单
11 加油站 Python 技巧型 中等 再看
12 直方图的水量 Python 两次遍历/双指针 困难 不难,再看下吧
13 翻转对 Python 归并排序/树状数组(没看懂) 困难 归并排序经典题目,再看
14 三角形的最大周长 Python sort+两边之和大于第三边 简单
15 大样本统计 Python 最大/最小/中位数/众数/平均数 中等
16 计算质数 Python 埃氏筛 简单 再看
17 二维数组的查找 Python 左下角开始,查找值大于当前值往右找,小于往上找 中等
18 搜索二维矩阵II Python 题目和上题为一个题 中等
19 杨辉三角 Python 简单
20 翻转矩阵后的得分 Python 脑筋急转弯 中等 再看
21 区间子数组个数 Python 两个结果集相减 中等 再看
22 K个不同整数的子数组 Python 哈希表+两个结果集相减 中等 再看
23 找不同 Python 位运算/ASCII码和的差/桶计数/哈希表 简单
24 旋转图像 Python 中等
25 和相同的二元子数组 Python 前缀和+哈希表 / 找出所有1所在位置 中等 再看
26 分发糖果 Python 两次遍历 困难 再看
27 较大分组的位置 Python 一次遍历 简单
28 旋转数组 Python 翻转数组/环形替换 中等
29 可被5整除的二进制前缀 Python 简单
30 缀点成线 Python 比较斜率/斜率+set/平移过原点+求Ax+By=0 简单
31 三个数的最大乘积 Python 排序/线性扫描找出最大三个数和最小两个数 简单
32 数组形式的整数加法 Python 简单
33 最长连续递增序列 Python 简单
34 寻找数组的中心索引 Python 简单
35 非递减序列 Python 简单 再看,第一次做感觉并不是很简单
36 杨辉三角II Python 递归 简单
37 找到所有数组中消失的数字 Python 简单 再看下
38 最大连续1的个数 Python 简单
39 数组拆分I Python 简单
40 重塑矩阵 Python 简单
41 K连续位的最小翻转次数 Python 差分数组 困难 再看
42 托普利茨矩阵 Python 遍历 简单
43 转置矩阵 Python 遍历 简单
44 区域和检索-数组不可变 Python 前缀和 简单
45 二维区域和检索 Python 图形面积变换/哈希表+前缀和+图形面积变化 中等
46 螺旋矩阵 Python 遍历 中等
47 设计停车系统 Python 遍历 简单
48 矩阵置零 Python set/第一行和第一列记录该列/行是否置0 中等
49 搜索二维矩阵 Python 中等
50 扁平化嵌套列表迭代器 Python 中等
51 接雨水 Python 遍历获取到当前为止最小值和最大值/双指针/栈 困难 经典面试题.再看
52 下一个排列 Python 排序 中等 主要考察排序
53 合并区间 Python 中等
54 合并两个有序数组 Python 简单
55 缺失的第一个正数 Python 困难 再看下吧(会的不难)
56 跳跃游戏 Python 中等 再看下(自己用了个O(n^2)复杂度,使用O(n)就可以)
57 螺旋矩阵III Python 中等 再看下
58 给 N x 3 网格图涂色的方案数 Python 递归 困难 再看下(用递推法可以很简单,dfs超时)
59 剑指offer03:数组中重复的数字 Python 原地置换/set 简单
  1. 链表
# Title Solution Backup level rewatch
1 反转链表 Python 双指针/递归 简单
2 环形链表 Python 双指针 中等
3 移除链表元素 Python 双指针 简单
4 设计链表 Python 链表的增删查 中等
5 环形链表II Python 链表技巧型 中等
6 奇偶链表 Python 链表拆分 中等 再看
7 对链表进行插入排序 Python 链表节点插入 中等 再看
8 k个一组翻转链表 Python 翻转链表 困难 再看(经典面试题)
9 相交链表 Python 简单
10 分隔链表 Python 一次遍历创建两个链表/两次遍历创建一个链表 中等
11 旋转链表 Python 中等
12 设计哈希集合 Python 链地址法/使用一个超大数组 简单 温习链地址法的使用
13 设计哈希映射 Python 链地址法(和上面题一样做法,在链表节点的构建上加上val即可)/使用一个超大数组 简单
14 反转链表II Python 分段处理+头插法 中等 再看
15 删除排序链表中的重复元素 Python 链表遍历/哈希表 简单
16 删除排序链表中的重复元素II Python 链表遍历/哈希表 中等 再看
17 LRU 缓存机制 Python 双向链表+哈希表 中等 经典面试题
18 两数相加 Python 链表 中等 经典面试题
19 重排链表 Python 链表 中等 链表合并部分需要看下
20 删除链表的倒数第N个节点 Python 链表+快慢指针 中等 再看
21 两数相加II Python 栈/反转链表/数组存储链表对应位置加和,使用数组进位 中等 栈的经典应用,再看下
22 复制带随机指针的链表 Python 递归 中等 第一次见随机指针的处理,再看下
  1. 哈希表
# Title Solution Backup level rewatch
1 O(1) 时间插入、删除和获取随机元素 - 允许重复 Python 数组+哈希表 困难 再看
2 两个数组的交集 Python 哈希表 简单
3 有效的字母异位词 Python 哈希表/数组 简单
4 赎金信 Python 哈希表 简单
5 分糖果 Python 技巧型哈希 简单 第一次没做出来,看下吧
6 快乐数 Python 哈希表 简单
7 两数之和 Python 哈希表 简单
8 四数之和II Python map 中等 再看,第一次没做出来
9 存在重复元素II Python map 简单
10 存在重复元素III Python 桶+map/树 中等 再看,有技巧性
11 数组中的k-diff数对 Python 哈希表/双指针 中等 再看
12 分割数组为连续子序列 Python 哈希表+最小堆/哈希表 中等 再看
13 将x减到0的最小操作数 Python 累加和+哈希表/双指针 中等 再看,挺好的题目
14 环绕字符串中唯一的子字符串 Python 哈希表 中等 再看,很好的题目
15 K个不同整数的子数组 Python 哈希表+两个结果集相减 中等 再看
16 存在重复元素 Python 哈希表 简单
17 字母异位词分组 Python 哈希表 中等 再看下吧
18 单词规律 Python 哈希表 简单
19 柠檬水找零 Python 哈希表 简单
20 字符串中的第一个唯一字符 Python 哈希表 简单
21 环形数组循环 Python 哈希表 中等 做出来了,还是比较难的,再看
22 串联所有单词的字串 Python 哈希表/哈希表+滑动窗口 困难 再看
23 同构字符串 Python 哈希表 简单 再看,建立字符间映射方法更好
24 等价多米诺骨牌对的数量 Python 哈希表 简单
25 数组的度 Python 哈希表 简单
26 无重复字符的最长子串 Python 哈希表 中等
27 森林中的兔子 Python 哈希表 中等
28 砖墙 Python 哈希表 中等
29 单词的压缩编码 Python 哈希表/字典树 中等 字典树需要看下
30 猜数字游戏 Python 哈希表 中等
31 只出现一次的数字II Python 哈希表 中等
  1. 字符串
# Title Solution Backup level rewatch
1 反转字符串 Python 字符串 简单
2 反转字符串II Python 字符串 简单
3 替换空格 Python 字符串 简单
4 左旋转字符串 Python 字符串 简单
5 实现strStr() Python KMP/遍历 简单 KMP经典题目,再看
6 重复的子字符串 Python KMP/拼接/遍历 简单 KMP经典题目,拼接方法也很好再看
7 有效的字母异位词 Python 字典/桶 简单
8 上升下降字符串 Python 简单
9 分割两个字符串得到回文串 Python 说不上来什么类型,很有意思的题目 中等 再看
10 Dota2参议院 Python 中等
11 外观数列 Python 简单
  1. 位运算
# Title Solution Backup level rewatch
1 根据数字二进制下 1 的数目排序 Python 其中一种方法: 位运算+字典 简单
2 二进制中 1 的个数 Python &与操作(n&(n-1)) 简单
3 位1 的个数 Python 同上 简单
4 颠倒二进制位 Python 分治法/逐位反转 简单 再看
  1. 栈与队列
# Title Solution Backup level rewatch
1 用栈实现队列 Python 栈+队列 简单 有平均复杂度O(1)的方法,之前做的麻烦些,再看
2 用队列实现栈 Python 单队列实现/双队列实现 简单
3 有效的括号 Python 简单
4 删除字符串中的所有相邻重复项 Python 简单 栈的经典题目,可以再看下
5 逆波兰表达式求值 Python 中等 注意下除法结果为负数的情况即可
6 滑动窗口最大值 Python 单调队列 困难
7 移掉k位数字 Python 中等 再看
8 根据身高重建队列 Python 技巧型 中等 再看
9 132模式 Python 中等 再看
10 柱状图中最大的矩形 Python 困难 经典栈问题,再看
11 去除重复字母 Python 困难 再看
12 不同字符的最小子序列 Python 栈,和上个题目是一个题 困难
13 拼接最大数 Python 遍历+上面题为基础+合并 困难 再看
14 比较含退格的字符串 Python 栈/双指针 简单
15 最大矩形 Python 困难 基于柱状图中最大的矩形题目,再看
16 栈的压入弹出序列 Python 中等 再看下吧
17 包含min函数的栈 Python 简单
18 下一个更大元素II Python 中等 再看
19 删除字符串中所有相邻重复项 Python 栈(更简单)/贪心 简单
20 基本计算器 Python 困难 再看
21 基本计算器II Python 中等 再看
22 验证二叉树的前序序列化 Python 中等 再看(以前没做过这类题目,不难但是没见过就不会)
23 笨阶乘 Python 中等 再看
24 最大正方形 Python dp(dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1) / 栈 中等
25 两数相加II Python 栈/反转链表/数组存储链表对应位置加和,使用数组进位 中等 栈的经典应用,再看下
26 每日温度 Python 中等
27 反转每对括号间的子串 Python 中等
28 最长有效括号 Python 栈/两次遍历/dp 困难 再看
# Title Solution Backup level rewatch
1 前k个高频元素 Python 最小堆/桶排序 中等
2 最接近原点的k个点 Python 最大堆/桶排序/直接排序 中等 再看
3 数组中第k个最大元素 Python 最小堆 中等
4 重构字符串 Python 贪心算法+最大堆/计数 中等 再看
5 分割数组为连续子序列 Python 哈希表+最小堆/哈希表 中等 再看
6 任务调度器 Python 桶排序/最大堆 中等 再看
7 最后一块石头的重量 Python 最大堆 简单
8 寻找两个正序数组的中位数 Python 最小堆+最大堆/二分查找(还没懂)/双指针遍历 困难 经典面试题
9 数组中第K个最大元素 Python 最小堆/冒泡排序 中等
10 前K个高频单词 Python 哈希表+堆 / 只用哈希表 中等
  1. 滑动窗口/双指针
# Title Solution Backup level rewatch
1 无重复字符的最长字串 Python 双指针+set 中等
2 有序数组的平方 Python 双指针 简单
3 数组中的k-diff数对 Python 哈希表/双指针 中等 再看
4 最短大于等于K的子数组长度 Python 双指针 中等 字节11.27面试真题
5 删除排序数组中的重复项 II Python 双指针 中等
6 移除元素 Python 双指针(本人SB似的当遍历值和val相等的时候非要找到下一个不相等的,直接遍历下一个元素就可以了呀) 简单 看下吧
7 三数之和 Python 双指针 中等
8 四数之和 Python 两个for循环嵌套+双指针 中等
9 按奇偶排序数组II Python 双指针/遍历 简单 再看
10 移动零 Python 双指针/遍历 简单
11 直方图的水量 Python 两次遍历/双指针 困难 不难,再看下吧
12 水果成篮 Python 双指针 中等 看心情
13 将x减到0的最小操作数 Python 累加和+哈希表/双指针 中等 再看,挺好的题目
14 翻转字符串中的元音字母 Python 哈希表+双指针 简单
15 替换后的最长重复字符 Python 双指针 中等 第一次见窗口只会不变或扩大,不会变小.再看
16 区间列表的交集 Python 双指针 中等
17 长按键入 Python 双指针/桶 简单
18 最大连续1的个数III Python 双指针(只会不变或变长的滑动窗口) 中等
19 令牌放置 Python 双指针 中等
20 替换子串得到平衡字符串 Python 双指针 中等 虽然做出来了,代码还是相对复杂些的
21 通过删除字母匹配到字典里最长单词 Python 双指针 中等
22 合并排序的数组 Python 双指针 简单
22 救生艇 Python 双指针 中等
23 安排工作以达到最大收益 Python 排序+双指针 中等 再看
24 最小差 Python 双指针 中等
25 单词距离 Python 哈希表+双指针 中等
26 统计子串中的唯一字符 Python 双指针 困难 再看,比较巧妙,代码很简单
27 可见点的最大数目 Python 数学+双指针 困难 主要是atan2函数的使用,不难,再看下吧
28 乘机小于k的子数组 Python 双指针/对数的累加和 中等 双指针求以right索引为结尾的子数组简单,我一开始求的以left开始,不好做.再看下
29 推多米诺 Python 双指针/两次遍历统计每个位置受力情况 中等 虽然做出来了,但是两次遍历方法值得再看
30 删除子数组的最大得分 Python 双指针 中等
31 三数之和的多种可能 Python 哈希表+双指针+分情况 中等 代码量较大,虽然做出来了,可以再看下
32 串联所有单词的字串 Python 哈希表/哈希表+滑动窗口 困难 再看
33 分发饼干 Python 排序+双指针 简单
34 种花问题 Python 双指针 简单 再看
35 汇总区间 Python 双指针 简单
36 滑动窗口中位数 Python 双指针+二分法 困难
37 子数组最大平均数I Python 双指针 简单
38 尽可能使字符串相等 Python 双指针/前缀和+二分查找 中等 前缀和+二分查找方法还需再看
39 可获得的最大点数 Python 双指针 中等
40 绝对值不超过限制的最长连续子数组 Python 双指针+单调队列 中等 再看(重点看)
41 爱生气的书店老板 Python 双指针 中等
42 翻转图像 Python 双指针 简单
43 盛水最多的容器 Python 双指针 中等
44 最大子序和 Python 双指针/分治 简单 分治法可以再看
45 删除有序数组中的重复项 II Python 双指针 中等
46 删除链表的倒数第N个节点 Python 链表+快慢指针 中等 再看
47 最小覆盖子串 Python 双指针 困难 再看下吧.难度还好, 就是代码有些复杂
48 等差数列划分 Python 双指针 中等
# Title Solution Backup level rewatch
1 重构字符串 Python 贪心算法+最大堆/桶计数 中等 再看
2 有效的字母异位词 Python 字典/桶 简单
3 上升下降字符串 Python 简单
4 前k个高频元素 Python 最小堆/桶排序 中等
5 最接近原点的k个点 Python 最大堆/桶排序/直接排序 中等 再看
6 存在重复元素III Python 桶+map/树 中等 再看,有技巧性
7 最大间距 Python 桶排序 困难 再看
8 任务调度器 Python 桶排序/最大堆 中等 再看
9 字符串的排列 Python 桶排序+不知道算不算的双指针/哈希表+双指针 中等 再看
  1. 股票问题
# Title Solution Backup level rewatch
1 买卖股票的最佳时机 Python 遍历 简单
2 买卖股票的最佳时机II Python 遍历 简单
3 买卖股票最佳时机含手续费 Python dp(设置sell+buy两个变量,进行dp) 中等 股票经典问题之一
4 买卖股票最佳时机III Python dp 困难
5 买卖股票最佳时机IV Python dp 困难 再看
  1. 二分法
# Title Solution Backup level rewatch
1 在排序数组中查找元素的第一个和最后一个位置 Python 二分查找 中等
2 最长递增子序列 Python DP/贪心+二分查找 中等 面试高频题目,再看
3 尽可能使字符串相等 Python 双指针/前缀和+二分查找 中等 前缀和+二分查找方法还需再看
4 俄罗斯套娃信封问题 Python 递增递减排序+二分查找/dp 困难 再看(LIS变形)
5 搜索旋转排序数组 Python 二分 中等 再看
6 搜索旋转排序数组II Python 二分(左中右相等的情况left+=1,right-=1) 中等
7 寻找旋转排序数组中的最小值 Python 二分查找(比较nums[mid]和nums[right]) 中等
8 寻找旋转排序数组中的最小值 II Python 二分查找(nums[left]==nums[mid]==nums[right],则left+=1,right-=1) 困难
9 在 D 天内送达包裹的能力 Python 二分查找 中等
10 平方数之和 Python 使用pow()函数/二分查找 中等
  1. DFS
# Title Solution Backup level rewatch
1 将数组拆分成斐波那契序列 Python DFS 中等 经典dfs+剪枝
2 移除最多的同行或同列石头 Python 并查集/bfs/dfs) 中等 再看
3 课程表 Python 拓扑排序(入度表+临接表)+bfs / dfs(优化的dfs不太会) 中等 再看
4 课程表II Python 拓扑排序(入度表+临接表)+bfs / 拓扑排序+dfs 中等 和课程表1思想一样,就是输出拓扑排序
5 分割字符串 Python dfs+dp 中等 可以再看下,做的时候自己没考虑到dp优化
6 子集II Python dfs 中等
7 全排列 Python dfs 中等
8 复原IP地址 Python dfs 中等
9 岛屿数量 Python dfs 中等 可以再看下,简单
10 单词搜索 Python dfs 中等
11 括号生成 Python dfs 中等
12 解数独 Python dfs 困难 再看下吧
13 解码方法 Python dfs+去重 中等 不难,再看下吧
14 组合总和IV Python dfs+记忆化搜索 中等
  1. BFS
# Title Solution Backup level rewatch
1 单词接龙 Python 双向bfs/bfs 中等 再看
2 移除最多的同行或同列石头 Python 并查集/bfs/dfs) 中等 再看
3 课程表 Python 拓扑排序(入度表+临接表)+bfs / dfs(优化的dfs不太会) 中等 再看
4 课程表II Python 拓扑排序(入度表+临接表)+bfs / 拓扑排序+dfs 中等 和课程表1思想一样,就是输出拓扑排序
5 最小高度树 Python 拓扑排序+bfs 中等 再看
  1. 拓扑排序
# Title Solution Backup level rewatch
1 最小高度树 Python 拓扑排序+bfs 中等 再看
2 课程表 Python 拓扑排序(入度表+临接表)+bfs / dfs(优化的dfs不太会) 中等 再看
3 课程表II Python 拓扑排序(入度表+临接表)+bfs / 拓扑排序+dfs 中等 和课程表1思想一样,就是输出拓扑排序
  1. DP
# Title Solution Backup level rewatch
1 不同路径 Python DP 中等
2 最长上升子序列 Python DP/贪心+二分查找 中等 面试高频题目,再看
3 摆动序列 Python dp/贪心 中等 再看
4 买卖股票最佳时机含手续费 Python dp(设置sell+buy两个变量,进行dp) 中等 股票经典问题之一
5 买卖股票最佳时机III Python dp 困难
6 使用最小代价爬楼梯 Python dp 简单
7 斐波那契数 Python dp/递归+lru_cache 简单
8 最长湍流子数组 Python dp/双指针 中等 再看
9 比特位计数 Python dp 中等 再看
10 分割回文串II Python dp 困难 再看
11 不同的子序列 Python dp 困难 再看
12 最长公共子序列 Python dp(经典dp) 中等
13 最长回文子串 Python 双指针/dp 中等 经典面试题
14 爬楼梯 Python dp 简单
15 正则表达式匹配 Python dp 困难 再看(经典面试题目)
16 编辑距离 Python dp 困难 经典面试题目
17 最大正方形 Python dp(dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + 1) / 栈 中等
18 打家劫舍 Python dp 中等
19 零钱兑换 Python dp 中等 再看
20 跳跃游戏II Python dp 中等
21. 丑数II Python dp+数学 中等
22. 打家劫舍II Python dp 中等 再看
23. 最大整除子集 Python dp 中等 再看
  1. 贪心算法
# Title Solution Backup level rewatch
1 摆动序列 Python dp/贪心 中等 再看
2 单调递增的数组 Python 贪心 中等 再看
3 无重叠区间 Python 贪心 中等 再看
4 情侣牵手 Python 并查集/贪心 困难 再看
5 青蛙过河 Python 贪心/dp 困难 贪心
  1. 并查集
# Title Solution Backup level rewatch
1 冗余连接 Python 并查集/bfs/dfs/拓扑排序 中等 只会并查集
2 交换字符串中的元素 Python 并查集(一个集合中的元素可以任意交换) 中等
3 省份数量 Python 并查集/bfs/dfs) 中等
4 移除最多的同行或同列石头 Python 并查集/bfs/dfs) 中等 再看
5 账户合并 Python 并查集(比较复杂,做出来了,花费时间较多) 中等
6 连通网络的操作次数 Python 并查集(线够时连通分量数-1) 中等
7 由斜杠划分区域 Python 并查集 中等
8 情侣牵手 Python 并查集/贪心 困难 再看
  1. 分治法
# Title Solution Backup level rewatch
1 至少有K个重复字符的最长子串 Python 分治法/滑动窗口(没看懂) 中等 再看
2 剑指 Offer 33. 二叉搜索树的后序遍历序列 Python 递归分治、辅助单调栈(看不太懂) 中等
3 最大子序和 Python 双指针/分治 简单 分治法可以再看
4 合并K个升序链表 Python 分治(归并) 困难 其实很简单,先拆分成单个,然后两个两个合并即可,再看下吧
5 排序链表 Python 分治(归并) 中等 再看下吧
6 数组中的逆序对 Python 分治(归并) 困难 经典面试题
  1. 字典序
# Title Solution Backup level rewatch
1. 字典序的第K小数字 Python 字典序 困难 再看(面试经典题目)
  1. 数学
# Title Solution Backup level rewatch
1. 阶乘后的零 Python 数学 简单 再看
2. 整数反转 Python 数学 简单
3. 回文数 Python 数学/转换为字符串 简单
4. 丑数 Python 数学 简单
5. 丑数II Python dp+数学 中等
6. 最大数 Python 自定义排序 中等 看下吧,自定义排序,感觉应该不会太考
7. 把数组排成最小的数 Python 自定义排序 中等 和上个题一样
8. 字符串相乘 Python 乘法在计算机中的运算规则 中等 再看
  1. 数学
# Title Solution Backup level rewatch
1. 矩形区域不超过 K 的最大数值和 Python 有序集合 困难 再看
  1. 常见的排序代码
# 1.快速排序
class Solution:
    def quick_sort(self, array, left, right):
        if left >= right:
            return array
        l, r = left, right
        temp = array[left]
        while left < right:
            while left < right and array[right] >= temp:
                right -= 1
            array[left] = array[right]
            while left < right and array[left] <= temp:
                left += 1
            array[right] = array[left]
        array[left] = temp
        self.quick_sort(array, l, left - 1)
        self.quick_sort(array, right + 1, r)
        return array
        
# 2.归并排序
class Solution:
    def guibing_sort(self, array):
        length = len(array)
        if length < 2:
            return array
        mid = length // 2
        left = self.guibing_sort(array[:mid])
        right = self.guibing_sort(array[mid:])
        res = []
        i, j = 0, 0
        while i < len(left) and j < len(right):
            if left[i] <= right[j]:
                res.append(left[i])
                i += 1
            else:
                res.append(right[j])
                j += 1
        if i < len(left):
            res += left[i:]
        if j < len(right):
            res += right[j:]
        return res

你可能感兴趣的:(leetcode,算法)