Skip to content

SHERlocked93/ts-datastructures-algorithms

Repository files navigation

本教程是在下从零入门学算法的沉淀,希望能帮助到你~ 🥳

数据结构与算法

PS: 在下博客还有一些其他的文章,欢迎关注~

1. 基本概念

  1. 时间复杂度
  2. 空间复杂度
  3. 算法的特性和设计原则

2. 数据结构

  1. 数组(Array)
  2. 栈(Stack)
  3. 队列(Queue)
  4. 链表(Linked List)
  5. 树(Tree)
  6. 堆(Heap)
  7. 字典(Dictionary)
  8. 哈希表(Hash Table)
  9. 图(Graph)

3. 基本算法思维

  1. 枚举
  2. 递归
  3. 回溯
  4. 分治
  5. 贪心算法
  6. 试探算法
  7. 模拟算法
  8. 动态规划
  9. 分支限界

4. 排序算法

  1. 冒泡排序(Bubble Sort)
  2. 选择排序(Selection Sort)
  3. 插入排序(Insertion Sort)
  4. 快速排序(Quick Sort)
  5. 希尔排序(Shell Sort)
  6. 归并排序(Merge Sort)
  7. 堆排序(Heap Sort)
  8. 计数排序(Counting Sort)
  9. 桶排序(Bucket Sort)
  10. 基数排序(Radix Sort)
  11. 排序算法的稳定性

5. 查找算法

  1. 线性查找(Order Search)
  2. 插值查找(Interpolation search)
  3. 二分查找(Binary Search)
  4. 斐波那契查找(Fibonacci search)
  5. 树表查找(Tree search)
  6. 分块查找(Block Search)
  7. 哈希查找(Hash Search)

6. 其他经典算法难题和思想

  1. 广度优先搜索(BFS)
  2. 深度优先搜索(DFS)
  3. 狄克斯特拉算法
  4. 贝尔曼-福特算法
  5. A*算法
  6. 滑动窗口思想
  7. 双指针法
  8. 欧几里得算法(辗转相除法)
  9. K最近邻算法(KNN)
  10. 线性规划
  11. 网络通信相关安全算法
  12. 聚类算法
  13. 分类算法

7. 行业应用

  1. GC算法
  2. 操作系统任务调度算法
  3. 限流算法
  4. 推介算法
  5. 机器学习
  6. 输入法猜测
  7. 垃圾邮件过滤器
  8. 论文查重算法
  9. 光学字符识别 OCR

8. leetcode 题解

由于 JS/TS 中字符串和数组太多相似,所以这里把数组与字符串归为一类。

难易程度:

  1. ★☆☆ 简单难度
  2. ★★☆ 中等难度
  3. ★★★ 困难难度

推介刷题的时候按照类别从易到难刷,下面按照从易到难的顺序按类别分类,可以直接按照这个顺序刷,面试之前分类各刷两三个熟悉一下

8.1 数组 & 字符串

关于字符串有一点要注意:

  1. 子串,必须是连在一起的子字符串,比如 abcabbc
  2. 子序列,指的是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串,比如 abcac 就属于子序列,子串一定是子序列,但子序列不一定是子串
编号 题目 难度 ↓
1 两数之和 ★☆☆
26 删除排序数组中的重复项 ★☆☆
122 买卖股票的最佳时机 ★☆☆
125 验证回文串 ★☆☆
344 反转字符串 ★☆☆
977 有序数组的平方 ★☆☆
8 字符串转换整数 ★★☆
189 旋转数组 ★★☆

8.2 散列表

编号 题目 难度 ↓
217 存在重复元素 ★☆☆

8.3 递归

编号 题目 难度 ↓
509 斐波那契数 ★☆☆
面试题08.06 汉诺塔问题 ★☆☆
50 Pow(x,n) ★★☆

8.4 数学

编号 题目 难度 ↓
7 整数反转 ★☆☆
9 回文数 ★☆☆
190 颠倒二进制位 ★☆☆
191 位1的个数 ★☆☆

8.5 栈 & 队列

编号 题目 难度 ↓
20 有效的括号 ★☆☆

8.6 动态规划

编号 题目 难度 ↓
53 最大子序和 ★☆☆
1137 第N个泰波那契数 ★☆☆
5 最长回文子串 ★★☆
55 跳跃游戏 ★★☆
62 不同路径 ★★☆
152 乘积最大子数组 ★★☆
322 零钱兑换 ★★☆
516 最长回文子序列 ★★☆
1143 最长公共子序列 ★★☆

8.7 贪心

编号 题目 难度 ↓
55 跳跃游戏 ★★☆

后记

看书的过程中,个人觉得<图解算法>的动态规划一章讲的不太好,<我的第一本算法书>的贝尔曼-福特算法和消息验证码讲的不太好

除了大部头的枕头书,一般的算法书都有所侧重,有的将有的不讲,所以,遇到某些书的某些章节讲的不好或者有你感兴趣的部分没有涉及,可以看看别的书,多方参照来学习。

PS:希望大家给我一个 🌟,你的支持就是我最大的动力哦~

下面是我推介的算法书籍,按需自取:

算法书籍推介

About

和我一起学算法吧!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published