切题
- Clarification 明确题目要求
- Possible solutions 所有可能解法
- compare (time/space)
- optimal 最优
- Coding
- Test cases
五遍刷题
- 第一遍
- 5-10 分钟:读题 + 思考
- 有思路:开始做和写代码 或 直接看解法:多解法,比较解法优劣
- 默写背诵
- 第二遍
- 马上自己写 → LeetCode 提交
- 多种解法比较、体会 → 优化
- 第三遍
- 24 小时后,再重复做题
- 不同解法的熟练程度 → 专项练习
- 第四遍
- 一周后:反复回来练习相同的题目
- 第五遍
- 面试前一周恢复性训练
时间复杂度:
- 树的遍历:前、中、后 O(n)
- 图的遍历:O(n)
- 搜索算法:DFS、BFS O(n)
- 二分查找:O(logn)
跳表:
- 升维思想
- 空间换时间
- 多级索引 增加 log2n 个级索引
- 时间复杂度 logn
- 维护成本较高
- 20 有效的括号
- 42 接雨水 ※
- 84 柱状图中最大的矩形 ※
- 155 最小栈
- 239 滑动窗口最大值
- 84 柱状图中最大的矩形
- 42 接雨水 ※
- 739 每日温度
- 496 下一个更大元素
- 316 去除重复字母
- 901 股票价格跨度
- 402 移掉 K 位数字
- 481 最短无序连续子数组
- 49 异位词
- 242 有效的字母异位词
- 641 实现双端队列
- 94 二叉树中序遍历
- 144 二叉树前序遍历
- 429 N 叉树的层序遍历
- 589 N 叉树的前序遍历
- 590 N 叉树的后序遍历
- 70 爬楼梯
- 22 括号生成 ※
-
- 翻转二叉树
-
- 验证二叉搜索树
-
- 二叉树的最大深度
-
- 二叉树的最小深度 ※
-
- 二叉树的序列化与反序列化 ※
-
- Pow(x, n)
-
- 子集
-
- 多数元素
-
- 电话号码的字母组合 ※
-
- N 皇后 ※
- 200 岛屿数量
-
- 岛屿的周长
-
- 岛屿的最大面积
-
- 最大人工岛
-
- 零钱兑换 ※
-
- 柠檬水找零
-
- 买卖股票的最佳时机 II
-
- 分发饼干
-
- 模拟行走机器人 ※※
-
- 跳跃游戏
-
- 跳跃游戏 II ※
单调性 上下界 索引访问
-
- x 的平方根
-
- 有效的完全平方数
-
- 搜索旋转排序数组 ※
-
- 搜索二维矩阵
-
- 寻找旋转排序数组中的最小值 ※
-
- 最长有效括号 ※
-
- 跳跃游戏 II ※ 边界问题
-
- 最大子序和
-
- 跳跃游戏
-
- 不同路径 √ dp 初始化方式
-
- 不同路径 II ※※ 需要重点讨论障碍物的情况
-
- 最小路径和 ※ 初始状态 dp[0][i] dp[i][0]
-
- 编辑距离
-
- 爬楼梯
-
- 最小覆盖子串 ※ 滑动窗口
-
- 最大矩形 ※ 转换为 84 题
-
- 解码方法 ※ s[i] s[i-1] 是否为'0' dp[i] dp[i-1] dp[i-2]
-
- 不同的子序列 ※※
-
- 乘积最大子数组 ※
-
- 打家劫舍 ※ dp[0] dp[1],滚动数组空间优化
-
- 三角形最小路径和 ※ bottom to up 解法很精妙
-
- 买卖股票的最佳时机 ※
-
- 买卖股票的最佳时机 II ※
-
- 买卖股票的最佳时机 III ※
-
- 买卖股票的最佳时机 IV ※※
-
- 完全平方数 ※※ 背包/零钱问题的转化
-
- 打家劫舍 II ※ robRange
-
- 最大正方形 ※ 递推关系的证明?
-
- 最长递增子序列 ※ dp + 二分
-
- 最佳买卖股票时机含冷冻期 ※※※
-
- 零钱兑换 ※※※ 细节
-
- 俄罗斯套娃信封问题
-
- 矩形区域不超过 K 的最大数值和 ???
-
- 青蛙过河 ???
-
- 分割数组的最大值 ??? dp 按照长度、前缀,枚举最后一个划分 二分枚举可能的最大值
-
- 最长回文子序列 ※
-
- 零钱兑换 II ※ 题解中 排列和组合的对比
-
- 学生出勤记录 II ※※
-
- 任务调度器 ※※
-
- 回文子串 ※※ 中心点的枚举数量, left,right 计算方式
-
- 买卖股票的最佳时机含手续费 ※
-
- 使用最小花费爬楼梯
-
- 赛车 ???
-
- 不同路径 III ※※※
-
- 最长公共子序列 ※ 考虑为什么取值范围是 m+1,n+1
-
- 括号生成
-
- 有效的数独 ※
-
- 解数独 ※
-
- N 皇后
-
- 爬楼梯
-
- 单词接龙
-
- 最小基因变化
-
- 滑动谜题
-
- 二进制矩阵中的最短路径
- 概念理解
https://leetcode-cn.com/problems/power-of-two/solution/2de-mi-by-leetcode-solution-rny3/
-
- N 皇后
-
- N 皇后 II
-
- 颠倒二进制位 ※
-
- 位 1 的个数
-
- 2 的幂 ※
-
- 比特位计数
- 了解对应的实现
- 146 LRU 缓存机制
- 选择排序、插入排序、冒泡排序
- 快排、归并
- 堆排序
- 计数排序、桶排序、基数排序
- 56 合并区间
- 242 有效的字母异位词
-
- 翻转对 逆序对 归并排序 ※
-
- 数组的相对排序 ※※ python sort(cmp=None, key=None, reverse=False) 参数学习
- 1244 ?
-
- 字符串转换整数 (atoi)
-
- 字符串相乘
-
- 最后一个单词的长度 倒序查找
-
- 字符串中的第一个唯一字符
-
- 转换成小写字母 ※ chr ord 32 65 90
-
- 宝石与石头
- 14 最长公共前缀
-
- 翻转字符串里的单词
-
- 反转字符串
-
- 反转字符串 II
-
- 反转字符串中的单词 III
-
- 仅仅反转字母 ※
- 49 字母异位词分组
-
- 有效的字母异位词
-
- 找到字符串中所有字母异位词 ※
-
- 最长回文子串
-
- 验证回文串 ※ isalnum 判断是否字符或数字
-
- 验证回文字符串 Ⅱ ※
-
- 最长回文子串
-
- 编辑距离
-
- 最长公共子序列
-
- 正则表达式匹配 ※※※
-
- 通配符匹配 ※
-
- 不同的子序列 ※
-
- 最长有效括号 ※
-
- 同构字符串 ※
-
- 有效数字 ???
-
- UTF-8 编码验证 ※
-
- 区域和检索 - 数组不可变
-
- 二维区域和检索 - 矩阵不可变 ※
-
- 矩形区域不超过 K 的最大数值和 ※※ ???
-
- 爱吃香蕉的珂珂
-
- 制作 m 束花所需的最少天数 ※
-
- 在 D 天内送达包裹的能力 ※
-
- 两球之间的磁力 ※※
-
- 无重复字符的最长子串
-
- 最小覆盖子串
-
- 找到字符串中所有字母异位词
-
- 字符串的排列
背包问题 416. 分割和子集 474. 一和零 494. 目标和 879. 盈利计划 1049. 最后一块石头的重量 ii
-
- 数位成本和为目标值的最大数字
-
- 零钱兑换
-
- 零钱兑换 ii
-
- 完全平方数
-
- 斐波那契数
-
- 最长递增子序列
-
- 俄罗斯套娃信封问题
-
- 最大子序和
-
- 最长公共子序列
-
- 编辑距离
-
- 最长回文子串
-
- 最长回文子序列 ※
-
- 让字符串成为回文串的最少插入次数
-
- 正则表达式匹配 ※※※
-
- 四键键盘 vip ※
-
- 鸡蛋掉落 ※
-
- 戳气球 ※※
-
- 分割等和子集
-
- 零钱兑换 II ※
-
- 打家劫舍
-
- 打家劫舍 II ※ robRange
-
- 打家劫舍 III
-
- 目标和
- 146 LRU 缓存机制
-
- LFU 缓存 ※
-
- 验证二叉搜索树
-
- 恢复二叉搜索树 ※※
-
- 相同的树
-
- 删除二叉搜索树中的节点 ※
-
- 二叉搜索树中的搜索
-
- 二叉搜索树中的插入操作 ※
- 105 从前序与中序遍历序列构造二叉树
- 124 二叉树中的最大路径和
-
- 完全二叉树的节点个数
-
- 二叉树的序列化与反序列化
-
- 二叉树的最近公共祖先 ※
-
- 下一个更大元素 I
-
- 下一个更大元素 II ※
-
- 滑动窗口最大值
-
- 回文链表
- 206 反转链表
-
- 反转链表 II ※
-
- K 个一组翻转链表
-
- 子集 ※
-
- 组合
- 46 全排列
-
- 解数独 ※
- 22 括号生成 ※
-
- 滑动谜题 ※
-
- 一月有多少天
-
- 两数之和
-
- 两数之和 III 数据结构设计
-
- 两数之和 II - 输入有序数组
- 15 三数和
-
- 四数之和
-
- 基本计算器
-
- 基本计算器 II
-
- 基本计算器 iii
-
- 煎饼排序
-
- 和为 K 的子数组
-
- 扁平化嵌套列表迭代器
-
- 计数质数 ※
-
- 超级次方 ※
-
- 二分查找
-
- 在排序数组中查找元素的第一个和最后一个位置
-
- 爱吃香蕉的珂珂
- 42 接雨水 ※
-
- 删除排序链表中的重复元素
-
- 最长回文子序列 ※
-
- 跳跃游戏
-
- 跳跃游戏 II ※
- 56 合并区间
-
- 无重叠区间
-
- 用最少数量的箭引爆气球
- 20 有效的括号
-
- 考场就座 ※
-
- 等式方程的可满足性
-
- Nim 游戏
-
- 石子游戏
-
- 灯泡开关
-
- 打开转盘锁
- 剑指 Offer 03. 数组中重复的数字
- 剑指 Offer 04. 二维数组中的查找
- 剑指 Offer 05. 替换空格
- 剑指 Offer 06. 从尾到头打印链表
- 剑指 Offer 07. 重建二叉树 ※※
- 剑指 Offer 09. 用两个栈实现队列
- 剑指 Offer 10- I. 斐波那契数列 ※
- 剑指 Offer 10- II. 青蛙跳台阶问题 ※
- 剑指 Offer 11. 旋转数组的最小数字 ※※※
- 剑指 Offer 12. 矩阵中的路径 ※※※※※
- 剑指 Offer 13. 机器人的运动范围 ※※
- 剑指 Offer 14- I. 剪绳子 ???
- 剑指 Offer 14- II. 剪绳子 II ???
- 剑指 Offer 15. 二进制中 1 的个数 ※
- 剑指 Offer 16. 数值的整数次方 ※※
- 剑指 Offer 17. 打印从 1 到最大的 n 位数 ※※※
- 剑指 Offer 18. 删除链表的节点 ※※
- 剑指 Offer 19. 正则表达式匹配 ※※※※※※
- 剑指 Offer 20. 表示数值的字符串 ???放弃了
- 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
- 剑指 Offer 22. 链表中倒数第 k 个节点
- 剑指 Offer 25. 合并两个排序的链表
- 剑指 Offer 26. 树的子结构 ※
- 剑指 Offer 27. 二叉树的镜像 ※※※
- 剑指 Offer 28. 对称的二叉树 ※
- 剑指 Offer 29. 顺时针打印矩阵 ※
- 剑指 Offer 30. 包含 min 函数的栈 ※※※
- 剑指 Offer 31. 栈的压入、弹出序列 ※
- 剑指 Offer 32 - I. 从上到下打印二叉树
- 剑指 Offer 32 - II. 从上到下打印二叉树 II ※
- 剑指 Offer 32 - III. 从上到下打印二叉树 III ※※※
- 剑指 Offer 33. 二叉搜索树的后序遍历序列 ※※※※
- 剑指 Offer 34. 二叉树中和为某一值的路径 ※※※※
- 剑指 Offer 35. 复杂链表的复制 ※
- 剑指 Offer 36. 二叉搜索树与双向链表 ※※※※
- 剑指 Offer 37. 序列化二叉树
- 剑指 Offer 38. 字符串的排列 ※※
- 剑指 Offer 39. 数组中出现次数超过一半的数字
- 剑指 Offer 40. 最小的 k 个数 ※※※※
- 剑指 Offer 41. 数据流中的中位数 ※※※※
- 剑指 Offer 42. 连续子数组的最大和
- 剑指 Offer 43. 1 ~ n 整数中 1 出现的次数 ???
- 剑指 Offer 44. 数字序列中某一位的数字 ???
- 剑指 Offer 45. 把数组排成最小的数 ※※※※
- 剑指 Offer 46. 把数字翻译成字符串
- 剑指 Offer 47. 礼物的最大价值
- 剑指 Offer 48. 最长不含重复字符的子字符串 ※※
- 剑指 Offer 49. 丑数 ※※※
- 剑指 Offer 50. 第一个只出现一次的字符
- 剑指 Offer 51. 数组中的逆序对 ※※※※
- 剑指 Offer 52. 两个链表的第一个公共节点 ※※
- 剑指 Offer 53 - I. 在排序数组中查找数字 I
- 剑指 Offer 53 - II. 0 ~ n-1 中缺失的数字 ※※
- 剑指 Offer 54. 二叉搜索树的第 k 大节点 ※※
- 剑指 Offer 55 - I. 二叉树的深度
- 剑指 Offer 55 - II. 平衡二叉树 ※※
- 剑指 Offer 56 - I. 数组中数字出现的次数 ※※※※
- 剑指 Offer 56 - II. 数组中数字出现的次数 II ※※※※
- 剑指 Offer 57. 和为 s 的两个数字 ※※※※
- 剑指 Offer 57 - II. 和为 s 的连续正数序列 ※※※※
- 剑指 Offer 58 - I. 翻转单词顺序 ※※
- 剑指 Offer 58 - II. 左旋转字符串
- 剑指 Offer 59 - I. 滑动窗口的最大值 ※※
- 剑指 Offer 59 - II. 队列的最大值 ※※
- 剑指 Offer 60. n 个骰子的点数 ???
- 剑指 Offer 61. 扑克牌中的顺子 ※※※※
- 剑指 Offer 62. 圆圈中最后剩下的数字 ???
- 剑指 Offer 63. 股票的最大利润 ※
- 剑指 Offer 64. 求 1+2+…+n ※※※※
- 剑指 Offer 65. 不用加减乘除做加法 ???
- 剑指 Offer 66. 构建乘积数组 ※※※※
- 剑指 Offer 67. 把字符串转换成整数 ???
- 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 ※※※※
- 剑指 Offer 68 - II. 二叉树的最近公共祖先 ※※※※
- 剑指 Offer II 001. 整数除法
- 剑指 Offer II 002. 二进制加法
- 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数
- 剑指 Offer II 004. 只出现一次的数字 ?
- 剑指 Offer II 005. 单词长度的最大乘积
- 剑指 Offer II 006. 排序数组中两个数字之和
- 剑指 Offer II 007. 数组中和为 0 的三个数 ※
- 剑指 Offer II 008. 和大于等于 target 的最短子数组
- 剑指 Offer II 009. 乘积小于 K 的子数组 ※
- 剑指 Offer II 010. 和为 k 的子数组
- 剑指 Offer II 011. 0 和 1 个数相同的子数组 ※
- 剑指 Offer II 012. 左右两边子数组的和相等
- 剑指 Offer II 013. 二维子矩阵的和 ※
- 剑指 Offer II 014. 字符串中的变位词 ※
- 剑指 Offer II 015. 字符串中的所有变位词
- 剑指 Offer II 016. 不含重复字符的最长子字符串
- 剑指 Offer II 017. 含有所有字符的最短字符串
- 剑指 Offer II 018. 有效的回文
- 剑指 Offer II 019. 最多删除一个字符得到回文
- 剑指 Offer II 020. 回文子字符串的个数
- 剑指 Offer II 021. 删除链表的倒数第 n 个结点 ※※
- 剑指 Offer II 022. 链表中环的入口节点 ※※※
- 剑指 Offer II 023. 两个链表的第一个重合节点
- 剑指 Offer II 024. 反转链表
- 剑指 Offer II 025. 链表中的两数相加
- 剑指 Offer II 026. 重排链表 ※※
- 剑指 Offer II 027. 回文链表 ※
- 剑指 Offer II 028. 展平多级双向链表 ※※※
- 剑指 Offer II 029. 排序的循环链表 ※
- 剑指 Offer II 030. 插入、删除和随机访问都是 O(1) 的容器 ※
- 剑指 Offer II 031. 最近最少使用缓存
- 剑指 Offer II 032. 有效的变位词
- 剑指 Offer II 033. 变位词组
- 剑指 Offer II 034. 外星语言是否排序 ※
- 剑指 Offer II 035. 最小时间差 v
- 剑指 Offer II 036. 后缀表达式
- 剑指 Offer II 037. 小行星碰撞 ?
- 剑指 Offer II 038. 每日温度
- 剑指 Offer II 039. 直方图最大矩形面积
- 剑指 Offer II 040. 矩阵中最大的矩形
- 剑指 Offer II 041. 滑动窗口的平均值
- 剑指 Offer II 042. 最近请求次数
- 剑指 Offer II 043. 往完全二叉树添加节点 ※
- 剑指 Offer II 044. 二叉树每层的最大值
- 剑指 Offer II 045. 二叉树最底层最左边的值
- 剑指 Offer II 046. 二叉树的右侧视图
- 剑指 Offer II 047. 二叉树剪枝 ※
- 剑指 Offer II 048. 序列化与反序列化二叉树 ※
- 剑指 Offer II 049. 从根节点到叶节点的路径数字之和 ※※※
- 剑指 Offer II 050. 向下的路径节点之和 ※※※
- 剑指 Offer II 051. 节点之和最大的路径
- 剑指 Offer II 052. 展平二叉搜索树 ※
- 剑指 Offer II 053. 二叉搜索树中的中序后继 ※※
- 剑指 Offer II 054. 所有大于等于节点的值之和
- 剑指 Offer II 055. 二叉搜索树迭代器 ※※
- 剑指 Offer II 056. 二叉搜索树中两个节点之和
- 剑指 Offer II 057. 值和下标之差都在给定的范围内 ?
- 剑指 Offer II 058. 日程表 ?
- 剑指 Offer II 059. 数据流的第 K 大数值 ?
- 剑指 Offer II 060. 出现频率最高的 k 个数字 ?
- 剑指 Offer II 061. 和最小的 k 个数对 ??
- 剑指 Offer II 062. 实现前缀树
- 剑指 Offer II 063. 替换单词 ?
- 剑指 Offer II 064. 神奇的字典 ??
- 剑指 Offer II 065. 最短的单词编码
- 剑指 Offer II 066. 单词之和
- 剑指 Offer II 067. 最大的异或 ?
- 剑指 Offer II 068. 查找插入位置 ※
- 剑指 Offer II 069. 山峰数组的顶部
- 剑指 Offer II 070. 排序数组中只出现一次的数字 ※
- 剑指 Offer II 071. 按权重生成随机数 ※※※
- 剑指 Offer II 072. 求平方根
- 剑指 Offer II 073. 狒狒吃香蕉
- 剑指 Offer II 074. 合并区间
- 剑指 Offer II 075. 数组相对排序 ※
- 剑指 Offer II 076. 数组中的第 k 大的数字 ※
- 剑指 Offer II 077. 链表排序 ※※
- 剑指 Offer II 078. 合并排序链表 ※
- 剑指 Offer II 079. 所有子集
- 剑指 Offer II 080. 含有 k 个元素的组合
- 剑指 Offer II 081. 允许重复选择元素的组合 ※※※
- 剑指 Offer II 082. 含有重复元素集合的组合 ※
- 剑指 Offer II 083. 没有重复元素集合的全排列 ※
- 剑指 Offer II 084. 含有重复元素集合的全排列
- 剑指 Offer II 085. 生成匹配的括号
- 剑指 Offer II 086. 分割回文子字符串 ※※※
- 剑指 Offer II 087. 复原 IP ※※※
- 剑指 Offer II 088. 爬楼梯的最少成本 ※
- 剑指 Offer II 089. 房屋偷盗
- 剑指 Offer II 090. 环形房屋偷盗
- 剑指 Offer II 091. 粉刷房子
- 剑指 Offer II 092. 翻转字符 ※※※※
- 剑指 Offer II 093. 最长斐波那契数列 ※※※※
- 剑指 Offer II 094. 最少回文分割 ※※※※
- 剑指 Offer II 095. 最长公共子序列
- 剑指 Offer II 096. 字符串交织 ※※※※
- 剑指 Offer II 097. 子序列的数目 ※※
- 剑指 Offer II 098. 路径的数目
- 剑指 Offer II 099. 最小路径之和
- 剑指 Offer II 100. 三角形中最小路径之和 https://leetcode-cn.com/problems/combination-sum-iv/solution/xi-wang-yong-yi-chong-gui-lu-gao-ding-bei-bao-wen-/
- 剑指 Offer II 101. 分割等和子集 ※※※
- 剑指 Offer II 102. 加减的目标值 ※※※
- 剑指 Offer II 103. 最少的硬币数目 ※※※
- 剑指 Offer II 104. 排列的数目 ※※※
- 剑指 Offer II 105. 岛屿的最大面积
- 剑指 Offer II 106. 二分图 ※※※
- 剑指 Offer II 107. 矩阵中的距离 ※※※
- 剑指 Offer II 108. 单词演变
- 剑指 Offer II 109. 开密码锁
- 剑指 Offer II 110. 所有路径 ※
- 剑指 Offer II 111. 计算除法 ※※※
- 剑指 Offer II 112. 最长递增路径 ※※
- 剑指 Offer II 113. 课程顺序 ※
- 剑指 Offer II 114. 外星文字典
- 剑指 Offer II 115. 重建序列
- 剑指 Offer II 116. 省份数量
- 剑指 Offer II 117. 相似的字符串
- 剑指 Offer II 118. 多余的边
- 剑指 Offer II 119. 最长连续序列
-
- 数组中最大数对和的最小值
-
- 复制带随机指针的链表
-
- 检查是否区域内所有整数都被覆盖 ※※ 差分数组 前缀和
-
- 得到子序列的最少操作次数 ???
-
- 二叉树中第二小的节点
-
- 二叉树中所有距离为 K 的结点 ※ 构建父节点关系 图
-
- 二叉树寻路 ???
-
- 有效三角形的个数 ※
-
- 字符串相乘
Microsoft-Hiring:一个微软HR做的网站,一些微软介绍以及题目 题目列表
共241道题 日均2~3道题 4个月内完成?
- 277 Find the Celebrity
- 346 Moving Average from Data Stream
- 253 Meeting Rooms II
- 252 Meeting Rooms
- 772 basic calculator iii
- 146 LRU 缓存机制
- 692 Top K Frequent Words 如何实现最大堆
- 206 Reverse Linked List 解法: 递归
- 24 Swap Nodes in Pairs
- 21 Merge Two Sorted Lists
- 56 Merge Intervals
- 268 Missing Number
- 212 Word Search II
- 88 Merge Sorted Array
- 14 Longest Common Prefix
- 328 Odd Even Linked List
- 68 Text Justification **
- 171 Excel Sheet Column Number
- 11 Container With Most Water
- 124 Binary Tree Maximum Path Sum
- 46 Permutations
- 200 Number of Islands
- 102 Binary Tree Level Order Traversal
- 15 3Sum
- 79 Word Search
- 105 Construct Binary Tree from Preorder and Inorder Traversal
- 49 Group Anagrams
- 210 Course Schedule II
- 4 Median of Two Sorted Arrays 还得再看看
- 3 Longest Substring Without Repeating Characters
- 78 subsets
- 468 Validate IP Address TODO
- 151 Reverse Words in a String
- 235 Lowest Common Ancestor of a Binary Search Tree 简单题都不会了
- 236 Lowest Common Ancestor of a Binary Tree 需要回顾
- 165 Compare Version Numbers
- 117 Populating Next Right Pointers in Each Node II
- 20 Valid Parentheses
- 722 Remove Comments TODO
- 215 Kth Largest Element in an Array