Algorithm目录

努力学习中

一、基础算法

  1. 二叉查找——在O({\bf log}n)的时间内寻找某一个具体值
  2. 计数排序——这是一种牺牲内存空间来换取低时间复杂度的排序算法,可以达到O(n)时间复杂度
  3. 快速排序——对冒泡排序的一种改进,可以在最好和平均时间复杂度为 O(n{\bf log}_2n),最坏时间复杂度O(n^2)
  4. 桶排序——当要被排序的数组内的数值平局分配的时候,桶排序使用线性时间(\Theta(n)
  5. 置换环——得到数组排序(可以指定排序方式)所需交换的最小次数

二、线性表

  1. 并查集——适用于解决一些元素的分组问题

三、栈和队列

  1. 单调队列——解决滑动窗口类问题
  2. 单调栈——解决Next Greater Element(NGE)问题

四、树

  1. 二叉搜索树——维护一个有序的数组,搜索前缀、后缀、最大值、最小值
  2. 平衡二叉搜索树——使每个结点的左右两颗子树的高度差都不超过一
  3. 线段树——用于维护区间信息,可以实现O({\bf log}\ n)的区间修改
  4. 二叉堆——适用于按大小取数的情况

五、图

  1. 单源最短路径-Dijkstra——解决正权图的单源最短路径问题

六、字符串

  1. 字典树——用来存储和查询字符串,利用字符串的公共前缀来减少查询时间,同时可以利用字符串的'后缀'+'$'+'前缀'形式完成前缀后缀的搜索
  2. KMP字符串匹配算法——在O(n+m)的时间复杂度内在文本串中快速查找模式串
  3. 最长公共子序列——利用动态规划查找两个字符串的最长公共子序列
  4. 确定有限状态自动机——求解给定的输入字符串S是否满足条件P的问题

七、动态规划

  1. 前缀和——数组的某下标之前的所有数组元素的和,在单位时间内求出单位和
  2. 线性动态规划——具有线性阶段划分的动态规划算法
  3. 区间动态规划——一个状态通常由被它包含且比它更小的区间状态转移而来
  4. 树形动态规划——根据树形结构进行动态规划的算法

八、数学

  1. 最大公约数和最小公倍数——求解最大公约数和最小公倍数简洁版
  2. 同余及其性质——数论中的一种等价关系
  3. 组合数的计算方法——从n个不同元素中取出个m(m\leq n)元素的所有组合的个数

九、高频面试题

  1. 面试高频题-最长公共子序列

参考文献:

  1. 算法·进阶石(algorithm-stone)—— 进击的每一步!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 读者经常让我写刷题路线,我觉得这些东西太枯燥了,今天就编一个故事讲讲。 这要从小东开始学习技术开始讲起。 小东是一...
    labuladong阅读 3,690评论 0 4
  • 1.数据结构 1.1 基本的数据结构 基本数据结构ADT及其实现常用数据结构对比及其应用场景查找树(搜索树)优先队...
    王侦阅读 4,181评论 0 1
  • 序言: 为了免去以后自己寻找可能会比较麻烦,然后把所有的书写的简书分类分条目列出 Spring+SpringMVC...
    是小猪童鞋啦阅读 14,810评论 0 4
  • 音视频流媒体开发-目录[https://www.jianshu.com/p/5a868a667838]iOS知识点...
    AlanGe阅读 5,214评论 0 9
  • 字符串 题目内容解法3 Longest Substring Without Repeating Characte...
    jluemmmm阅读 1,358评论 0 0