本教程是在下从零入门学算法的沉淀,希望能帮助到你~ 🥳
PS: 在下博客还有一些其他的文章,欢迎关注~
- 时间复杂度
- 空间复杂度
- 算法的特性和设计原则
- 数组(Array)
- 栈(Stack)
- 队列(Queue)
- 链表(Linked List)
- 树(Tree)
- 堆(Heap)
- 字典(Dictionary)
- 哈希表(Hash Table)
- 图(Graph)
- 枚举
- 递归
- 回溯
- 分治
- 贪心算法
- 试探算法
- 模拟算法
- 动态规划
- 分支限界
- 冒泡排序(Bubble Sort)
- 选择排序(Selection Sort)
- 插入排序(Insertion Sort)
- 快速排序(Quick Sort)
- 希尔排序(Shell Sort)
- 归并排序(Merge Sort)
- 堆排序(Heap Sort)
- 计数排序(Counting Sort)
- 桶排序(Bucket Sort)
- 基数排序(Radix Sort)
- 排序算法的稳定性
- 线性查找(Order Search)
- 插值查找(Interpolation search)
- 二分查找(Binary Search)
- 斐波那契查找(Fibonacci search)
- 树表查找(Tree search)
- 分块查找(Block Search)
- 哈希查找(Hash Search)
- 广度优先搜索(BFS)
- 深度优先搜索(DFS)
- 狄克斯特拉算法
- 贝尔曼-福特算法
- A*算法
- 滑动窗口思想
- 双指针法
- 欧几里得算法(辗转相除法)
- K最近邻算法(KNN)
- 线性规划
- 网络通信相关安全算法
- 聚类算法
- 分类算法
- GC算法
- 操作系统任务调度算法
- 限流算法
- 推介算法
- 机器学习
- 输入法猜测
- 垃圾邮件过滤器
- 论文查重算法
- 光学字符识别 OCR
由于 JS/TS 中字符串和数组太多相似,所以这里把数组与字符串归为一类。
难易程度:
- ★☆☆ 简单难度
- ★★☆ 中等难度
- ★★★ 困难难度
推介刷题的时候按照类别从易到难刷,下面按照从易到难的顺序按类别分类,可以直接按照这个顺序刷,面试之前分类各刷两三个熟悉一下
关于字符串有一点要注意:
- 子串,必须是连在一起的子字符串,比如
abc
的ab
、bc
- 子序列,指的是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串,比如
abc
的ac
就属于子序列,子串一定是子序列,但子序列不一定是子串
编号 题目 难度 ↓ 1 两数之和 ★☆☆ 26 删除排序数组中的重复项 ★☆☆ 122 买卖股票的最佳时机 ★☆☆ 125 验证回文串 ★☆☆ 344 反转字符串 ★☆☆ 977 有序数组的平方 ★☆☆ 8 字符串转换整数 ★★☆ 189 旋转数组 ★★☆
编号 题目 难度 ↓ 217 存在重复元素 ★☆☆
编号 题目 难度 ↓ 509 斐波那契数 ★☆☆ 面试题08.06 汉诺塔问题 ★☆☆ 50 Pow(x,n) ★★☆
编号 题目 难度 ↓ 7 整数反转 ★☆☆ 9 回文数 ★☆☆ 190 颠倒二进制位 ★☆☆ 191 位1的个数 ★☆☆
编号 题目 难度 ↓ 20 有效的括号 ★☆☆
编号 题目 难度 ↓ 53 最大子序和 ★☆☆ 1137 第N个泰波那契数 ★☆☆ 5 最长回文子串 ★★☆ 55 跳跃游戏 ★★☆ 62 不同路径 ★★☆ 152 乘积最大子数组 ★★☆ 322 零钱兑换 ★★☆ 516 最长回文子序列 ★★☆ 1143 最长公共子序列 ★★☆
编号 题目 难度 ↓ 55 跳跃游戏 ★★☆
看书的过程中,个人觉得<图解算法>的动态规划一章讲的不太好,<我的第一本算法书>的贝尔曼-福特算法和消息验证码讲的不太好
除了大部头的枕头书,一般的算法书都有所侧重,有的将有的不讲,所以,遇到某些书的某些章节讲的不好或者有你感兴趣的部分没有涉及,可以看看别的书,多方参照来学习。
PS:希望大家给我一个 🌟,你的支持就是我最大的动力哦~
下面是我推介的算法书籍,按需自取: