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