algorithm-notes icon indicating copy to clipboard operation
algorithm-notes copied to clipboard

A Small Front-end Algorithm Note

leetcode notes

记录一个小前端的正规化重学算法成长史 🏄


个人计划

第一阶段

  • [x] 梳理全部知识点概念 (13/13)
  • [x] 基础点实践 (12/12)

第二阶段

  • [x] 数据结构定向刷题

第三阶段

  • [ ] 算法设计及技巧定向刷题

第一阶段

知识梳理

  • [x] 算法复杂度 Docs & Example
  • [x] 栈 Docs & Example
  • [x] 队列和双端队列 Docs & Example
  • [x] 链表 Docs & Example
  • [x] 集合 Docs & Example
  • [x] 字典 Docs & Example
  • [x] 散列表 Docs & Example
  • [x] 递归 Docs & Example
  • [x] 树 Docs & Example
  • [x] 二查堆和堆排序 Docs & Example
  • [x] 图 Docs & Example
  • [x] 排序和搜索算法 Sorting Docs & Example Search Docs & Example
  • [x] 算法设计与技巧 Docs & Example

第二阶段

数据结构定向刷题

  • leetcode#20.有效的括号
  • leetcode#155.最小栈
  • leetcode#232.用栈实现队列
  • leetcode#678.有效的括号字符串
  • leetcode#682.棒球比赛

队列和双端队列

  • 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#349.两个数组的交集
  • leetcode#1507.转变日期格式
  • leetcode#705.设计哈希集合

字典

  • leetcode#1.两数之和
  • 剑指Offer#03.数组中重复的数字

散列表/哈希表

  • leetcode#217.存在重复元素
  • leetcode#13.罗马数字转整数
  • leetcode#141.环形链表

递归

  • leetcode#206.反转链表
  • leetcode#101.对称二叉树
  • leetcode#21.合并两个有序链表

  • leetcode#111.二叉树的最小深度
  • leetcode#100.相同的树
  • leetcode#94.二叉树的中序遍历
  • leetcode#104.二叉树的最大深度
  • leetcode#102.二叉树的层序遍历

  • leetcode#215.数组中的第 K 个最大元素
  • leetcode#1046.最后一块石头的重量
  • leetcode#347.前 K 个高频元素
  • leetcode#23.合并 K 个升序链表

  • leetcode#1791.找出星型图的中心节点
  • leetcode#997.找到小镇的法官

第三阶段

算法设计及技巧定向刷题

排序算法

  • 冒泡排序-leetcode#912.排序数组
  • 选择排序-leetcode#88.合并两个有序数组
  • 归并排序-leetcode#148.排序链表
  • 归并排序-leetcode#912.排序数组

搜索/查找算法

  • 二分查找-leetcode#704.二分查找
  • 二分查找-leetcode#278.第一个错误的版本
  • 二分查找-leetcode#35.搜索插入位置

分而治之

  • leetcode#374.猜数字大小

动态规划

  • leetcode#70.爬楼梯
  • leetcode#509.斐波那契数
  • leetcode#746.使用最小花费爬楼梯
  • leetcode#198.打家劫舍

贪心算法

回溯算法

双指针

  • 左右指针-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.字符串的排列