记录一个小前端的正规化重学算法成长史 🏄
第一阶段
- 梳理全部知识点概念
(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 & Example
Search 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.字符串的排列