记录一个小前端的正规化重学算法成长史 🏄
第一阶段
-  梳理全部知识点概念 (13/13)
-  基础点实践 (12/12)
第二阶段
- 数据结构定向刷题
第三阶段
- 算法设计及技巧定向刷题
知识梳理
-  算法复杂度 Docs & Example
-  栈 Docs & Example
-  队列和双端队列 Docs & Example
-  链表 Docs & Example
-  集合 Docs & Example
-  字典 Docs & Example
-  散列表 Docs & Example
-  递归 Docs & Example
-  树 Docs & Example
-  二查堆和堆排序 Docs & Example
-  图 Docs & Example
-  排序和搜索算法 Sorting Docs & ExampleSearch Docs & Example
-  算法设计与技巧 Docs & Example
数据结构定向刷题
栈
队列和双端队列
- leetcode#933.最近的请求次数
- leetcode#225.用队列实现栈
- leetcode#346.数据流中的移动平均值
- leetcode#387.字符串中的第一个唯一字符
- leetcode#1700.无法吃午餐的学生数量
- leetcode#622.设计循环队列
- leetcode#286.墙与门
- leetcode#200.岛屿数量
- leetcode#752.打开转盘锁
- leetcode#279.完全平方数
链表
- leetcode#237.删除链表中的节点
- leetcode#206.反转链表
- leetcode#160.相交链表
- leetcode#234.回文链表
- leetcode#203.移除链表元素
- leetcode#83.删除排序链表中的重复元素
- leetcode#622.设计循环队列
集合
字典
散列表/哈希表
递归
树
- leetcode#111.二叉树的最小深度
- leetcode#100.相同的树
- leetcode#94.二叉树的中序遍历
- leetcode#104.二叉树的最大深度
- leetcode#102.二叉树的层序遍历
堆
图
算法设计及技巧定向刷题
排序算法
- 冒泡排序-- leetcode#912.排序数组
- 选择排序-- leetcode#88.合并两个有序数组
- 归并排序-- leetcode#148.排序链表
- 归并排序-- leetcode#912.排序数组
搜索/查找算法
- 二分查找-- leetcode#704.二分查找
- 二分查找-- leetcode#278.第一个错误的版本
- 二分查找-- leetcode#35.搜索插入位置
分而治之
动态规划
贪心算法
回溯算法
双指针
- 左右指针-- leetcode#977.有序数组的平方
- 左右指针-- leetcode#189.轮转数组
- 左右指针-- leetcode#167.两数之和 II - 输入有序数组
- 左右指针-- leetcode#344.反转字符串
- 左右指针-- leetcode#557.反转字符串中的单词 III
- 左右指针-- leetcode#75.颜色分类
- 左右指针-- leetcode#1446.连续字符
- 快慢指针-- leetcode#876.链表的中间结点
- 快慢指针-- leetcode#19.删除链表的倒数第 N 个结点
- 快慢指针-- leetcode#26.删除有序数组中的重复项
- 快慢指针-- leetcode#283.移动零
- 快慢指针-- leetcode#27.移除元素
- 快慢指针-- leetcode#80.删除有序数组中的重复项 II
- 滑动窗口-- leetcode#3.无重复字符的最长子串
- 滑动窗口-- leetcode#643.子数组最大平均数 I
- 滑动窗口-- leetcode#1456.定长子串中元音的最大数目
- 滑动窗口-- leetcode#1423.可获得的最大点数
- 滑动窗口-- leetcode#76.最小覆盖子串
- 滑动窗口-- leetcode#209.长度最小的子数组
- 滑动窗口-- leetcode#1695.删除子数组的最大得分
- 滑动窗口-- leetcode#438.找到字符串中所有字母异位词
- 滑动窗口-- leetcode#567.字符串的排列