go日常算法学习
目录
解题思路
学习路线
1.数组
- 1. 两数之和
- 169. 多数元素
- 217. 存在重复元素
- 219. 存在重复元素 II
- 228. 汇总区间
- 268. 丢失的数字
- 303. 区域和检索 - 数组不可变
- 304. 二维区域和检索 - 矩阵不可变
- 370. 区间加法
- 1109. 航班预订统计
- 1094. 拼车
- 151. 翻转字符串里的单词
- 48. 旋转图像
- 528. 按权重随机选择
- 870. 优势洗牌
- 380. O(1) 时间插入、删除和获取随机元素
- 710. 黑名单中的随机数
- 316. 去除重复字母
- 1081. 不同字符的最小子序列
1.1. 双指针
1.2. 滑动窗口
- 76. 最小覆盖子串
- 567. 字符串的排列
- 438. 找到字符串中所有字母异位词
- 3. 无重复字符的最长子串
- 1004. 最大连续1的个数 III
- 187. 重复的DNA序列
- 28. 找出字符串中第一个匹配项的下标
1.3. 归并
1.4. 快速排序
2. 链表
2.1. 双指针技巧解法
- 19. 删除链表的倒数第N个结点
- 21. 合并两个有序链表
- 23. 合并K个升序链表-分治
- 23. 合并K个升序链表-最小堆
- 83. 删除排序链表中的重复元素
- 86. 分隔链表
- 141. 环形链表
- 142. 环形链表 II
- 160. 相交链表
- 876. 链表的中间结点
2.2. 递归解法
3. 二叉树
- 104. 二叉树的最大深度
- 116. 填充每个节点的下一个右侧节点指针
- 144. 二叉树的前序遍历
- 145. 二叉树的后序遍历
- 226. 翻转二叉树
- 543. 二叉树的直径
- 114. 二叉树展开为链表
- 654. 最大二叉树
- 105. 从前序与中序遍历序列构造二叉树
- 106. 从中序与后序遍历序列构造二叉树
- 889. 根据前序和后序遍历构造二叉树
- 102. 二叉树的层序遍历
- 297. 二叉树的序列化与反序列化
- 652. 寻找重复的子树
- 236. 二叉树的最近公共祖先
- 1676. 二叉树的最近公共祖先 IV
- 1644. 二叉树的最近公共祖先 II
- 235. 二叉搜索树的最近公共祖先
- 1650. 二叉树的最近公共祖先 III
- 222. 完全二叉树的节点个数
3.1. 二叉搜索树
- 230. 二叉搜索树中第K小的元素
- 538. 把二叉搜索树转换为累加树
- 1038. 把二叉搜索树转换为累加树
- 98. 验证二叉搜索树
- 700. 二叉搜索树中的搜索
- 701. 二叉搜索树中的插入操作
- 450. 删除二叉搜索树中的节点
- 96. 不同的二叉搜索树
- 95. 不同的二叉搜索树 II
4. 图
- 797. 所有可能的路径
- 207. 课程表
- 210. 课程表 II
- 785. 判断二分图
- 886. 可能的二分法
- 323. 无向图中连通分量的数目
- 130. 被围绕的区域
- 990. 等式方程的可满足性
- 277. 搜寻名人g
5. 动态规划
5.1. 买卖股票
- 121. 买卖股票的最佳时机
- 122. 买卖股票的最佳时机 II
- 309. 最佳买卖股票时机含冷冻期
- 714. 买卖股票的最佳时机含手续费
- 123. 买卖股票的最佳时机 III
- 188. 买卖股票的最佳时机 IV