算法

  • 最后更新:07年12月,2020年

主题:

分析的算法:

  1. 渐近分析
  2. 最差、一般和最好的情况
  3. 渐近符号
  4. 小o和小ω符号
  5. 下界和上界理论
  6. 分析循环
  7. 解决复发
  8. 平摊分析
  9. “空间复杂性”是什么意思?
  10. Pseudo-polynomial算法
  11. np完全的介绍
  12. 多项式时间近似格式
  13. 时间复杂性问题
  14. 构建堆的时间复杂性
  15. 循环变量增加1、2、3、4 ..
  16. 带幂的循环的时间复杂度
  17. 循环的性能(缓存问题)

最近关于算法分析的文章
算法分析小测验
测试在复发

搜索和排序:



  1. 线性搜索,二分查找,跳转搜索,插值搜索,指数搜索,三元搜索
  2. 选择排序,冒泡排序,插入排序,归并排序,堆排序,快速排序,基数排序,计数排序,桶排序,ShellSort,梳子排序,分类排序,周期排序
  3. 插值搜索vs二分搜索
  4. 排序算法的稳定性
  5. 快速排序的最坏情况何时发生?
  6. 基于比较的排序算法的下界
  7. 哪一种排序算法的内存写操作最少?
  8. 找到最小长度的未排序子数组,排序使整个数组排序
  9. 对链表进行归并排序
  10. 对一个几乎排序(或K排序)的数组进行排序
  11. 迭代的快速排序
  12. 对单链表快速排序
  13. 对双链表进行快速排序
  14. 找出k个最接近给定值的元素
  15. 在线性时间内对从0到n²- 1范围内的n个数字排序
  16. 许多二进制搜索实现中的一个问题
  17. 在几乎排序的数组中搜索
  18. 以波形对数组进行排序
  19. 为什么二分搜索优于三元搜索?
  20. 未排序数组中第K个最小/最大的元素
  21. 在预期线性时间内,未排序数组中第K个最小/最大的元素
  22. 最坏情况下,无序数组中第K个最小/最大的元素线性时间
  23. 从两个已排序的数组中找到最接近的一对
  24. 在三个已排序的数组中查找公共元素
  25. 给定一个已排序的数组和一个数字x,找出数组中和最接近x的一对
  26. 计数1中的分类二进制数组
  27. 二分插入排序
  28. 插入单独链接列表
  29. 为什么快速排序优先于数组和归并排序链表?
  30. 双链表的归并排序
  31. 最小相邻交换,以移动最大和最小到角落

最近关于搜索的文章
关于排序的最新文章
测试在搜索
测试在排序
搜寻编码实务
分类编码实务

贪心算法:

  1. 活动的选择问题
  2. Kruskal最小生成树算法
  3. 霍夫曼编码
  4. 高效的霍夫曼编码排序输入
  5. 普里姆最小生成树算法
  6. 邻接表表示的Prim的MST
  7. Dijkstra最短路径算法
  8. 邻接表表示的Dijkstra算法
  9. 作业排序问题
  10. 贪心算法小测验
  11. 贪心算法求最小硬币数
  12. K中心问题
  13. 铁路/巴士站所需最少月台数目

最近关于贪婪算法的文章
贪心算法小测验
贪心算法的编码实践

动态规划:

  1. 重叠子问题属性
  2. 最优子结构性质
  3. 最长上升子序列
  4. 最长公共子序列
  5. 编辑距离
  6. 最小成本路径
  7. 硬币改变
  8. 矩阵链乘法
  9. 二项式系数
  10. 0 - 1背包问题
  11. 鸡蛋掉难题
  12. 最长回文的子序列
  13. 减少一个杆
  14. 最大和递增子序列
  15. 最长双调的子序列
  16. 弗洛伊德沃肖尔算法
  17. parindrome分区
  18. 分区的问题
  19. 自动换行问题
  20. 对链的最大长度
  21. 变化的LIS
  22. 盒子堆积问题
  23. 斐波那契数列程序
  24. 到达终点的最小跳跃数
  25. 所有1的最大大小方子矩阵
  26. 丑陋的数字
  27. 最大和相邻子数组
  28. 最长的回文基字符串
  29. 最短路径的Bellman-Ford算法
  30. 最优二叉搜索树
  31. 最大独立集问题
  32. 子集和问题
  33. 二维矩阵中的最大和矩形
  34. 不连续为1的二进制字符串的个数?年代
  35. 布尔Parenthesization问题
  36. 计算达到第n楼梯的方法
  37. 最小代价多边形三角剖分
  38. 移动数字键盘问题
  39. n个数字的和等于给定和的数的计数
  40. 到达目的地的最小起始点
  41. n位非递减数的总数
  42. 找出从给定的起始字符开始的最长连续路径的长度
  43. 铺瓷砖问题
  44. 其和等于给定数字n的最小平方数
  45. 找到制作给定值的最小硬币数量
  46. 使用两次遍历收集网格中的最大点
  47. 最短的普通超层序
  48. 计算从1到n的所有数字的和
  49. 计算建筑物的可能方法
  50. 最多两次购买和销售份额的最大利润
  51. 如何使用给定的四个键打印最大A的A.
  52. 找出乘火车到达目的地的最低费用
  53. 顶点覆盖问题|集2(树的动态规划解)
  54. 计算在游戏中达到一个给定分数的方法的数量
  55. 加权作业调度
  56. 最长偶数长度的子串,使前半段和后半段之和相等

关于动态规划的最新文章
动态规划小测验
动态编程的编码实践



模式搜索:

  1. 天真的模式搜索
  2. 公里的算法
  3. - karp算法
  4. 一个简单的模式搜索问题
  5. 有限自动机
  6. 有限自动机的有效构造
  7. Boyer Moore算法-坏字符启发式
  8. 后缀数组
  9. 字谜子字符串搜索(或搜索所有排列)
  10. 使用所有后缀的尝试进行模式搜索
  11. 模式搜索的Aho-Corasick算法
  12. kasai的算法从后缀数组构造LCP数组
  13. Z算法(线性时间模式搜索算法)
  14. 祝妇女节节目

最近关于模式搜索的文章

其他字符串算法:

  1. Manacher算法-线性时间最长回文子串-第1部分,第2部分,第3部分,第4部分
  2. 最长偶数长度的子串,使前半段和后半段之和相等
  3. 打印所有可以通过放置空格生成的字符串

最近关于字符串的文章
串编码练习

回溯:

  1. 打印给定字符串的所有排列
  2. 骑士的旅行问题
  3. 迷宫里的老鼠
  4. N皇后问题
  5. 子集之和
  6. m着色问题
  7. 哈密顿周期
  8. 数独
  9. 拔河比赛
  10. 解决Cryptarithmetic谜题

最近关于回溯的文章
回溯的编码实践

划分和征服:

  1. 介绍
  2. 写出你自己的pow(x, n)来计算x*n
  3. 两个排序阵列的中位数
  4. 计算反演
  5. 最近点对
  6. Strassen矩阵乘法
  7. 快速排序vs归并排序

最近关于分而治之的文章
分而治之的小测验
分而治之的编码实践

几何算法:

  1. 最近的一对点| O(nlogn)实现
  2. 如何检查两个给定线段是否相交?
  3. 如何检查一个给定的点是否在一个多边形内或外?
  4. 凸包|集1 (Jarvis算法或包装)
  5. 凸包|集2 (Graham扫描)
  6. 给定n条线段,求任意两条线段是否相交
  7. 检查给定的点是否在三角形内
  8. 如何检查给出的四个点是否构成一个正方形

关于几何算法的最新文章
几何算法的编码练习

数学算法:

  1. 写一个有效的方法来检查一个数是否为3的倍数
  2. 与7相乘的有效方法
  3. 编写一个C程序打印给定字符串的所有排列
  4. 幸运数字
  5. 写一个程序,使两个数以14为基数相加
  6. 巴比伦的平方根法
  7. 两个整数相乘时不使用乘法、除法和位运算符,也不使用循环
  8. 打印所有可以组成给定数字的点的组合
  9. 无需使用乘法(*)和除法(/)运算符就可以编写自己的运算能力
  10. 斐波那契数列程序
  11. 一串数字的平均值
  12. 计算不包含3的数字
  13. MagicSquare
  14. 埃拉托斯特尼筛法
  15. 在M到N范围内具有最大素数因子的数
  16. 查找给定日期的星期几
  17. 基于DFA的部门
  18. 以相等的概率从1到7生成整数
  19. 给定一个数字,找出下一个最小的回文
  20. 从偏见的硬币制作一个公平的硬币
  21. 检查是否能被7整除
  22. 求3的最大倍数
  23. 字符串的字典顺序
  24. 按排序(字典式)顺序打印所有排列
  25. 洗牌给定数组
  26. 空间和时间有效二项式系数
  27. 水库采样
  28. 帕斯卡三角形
  29. 从流中选择一个带有O(1)空间的随机数
  30. 找到2,3和5的最大倍数
  31. 计算e^x的有效程序
  32. 用两个容器和无限的供水量一升
  33. 打印给定数字的所有质因数的有效程序
  34. 输出大小为n的给定数组中r个元素的所有可能组合
  35. 任意概率分布方式随机数发生器
  36. 如何检查一个给定的数字是否是斐波那契数?
  37. 俄罗斯农民乘法
  38. 计算大小为2或3的所有可能组的和为3的倍数
  39. 河内塔
  40. 多项式求值的霍纳法
  41. 在一个数的阶乘中计数尾部的0
  42. 第n个加泰罗尼亚号码的程序
  43. 根据给定的概率生成3个数字中的一个
  44. 从给定的列号中查找Excel列名
  45. 找出具有同一组数字的下一个更大的数
  46. 计算给定数字序列的可能解码
  47. 计算时针和分针之间的夹角
  48. 不连续为1的二进制字符串的个数?年代
  49. 找出与给定数n相乘的最小数
  50. 画一个没有浮点运算的圆
  51. 如何检查8个谜题的一个实例是可解决的?
  52. 生日悖论
  53. 用两个多项式
  54. 计算满足不等式x*x + y*y < n的不同的非负整数对(x, y)
  55. 计算达到第n楼梯的方法
  56. 将输入整数中的所有' 0 '替换为' 5 '
  57. 程序将两个多项式相加
  58. 打印1/n的前k位,其中n是一个正整数
  59. 给定一个数字作为一个字符串,找出递归相加为9的连续子序列的个数
  60. 程序的二分法
  61. 错误定位方法程序
  62. 牛顿法程序

关于数学算法的最新文章
数学算法的编码练习

算法:

  1. 找到只出现一次的元素
  2. 发现相反的迹象
  3. 设置从1到n的所有数字中的位
  4. 交换位
  5. 添加两个数字
  6. 最小的三个
  7. 一个布尔数组谜题
  8. 在一个(大)数组中设置位
  9. 具有相同位数的下一个更大的数
  10. 优化技术(模量)
  11. 给一个数字加1
  12. 乘以3.5
  13. 关闭最右边的设置位
  14. 检查4的力量
  15. 没有分支的绝对值(abs)
  16. 模数除以2的幂数
  17. 两个整数的最小或最大
  18. 旋转部分
  19. 在数组中找到两个非重复元素
  20. 奇数次出现的次数
  21. 检查整数溢出
  22. 小端和大端
  23. 一个数的反转位
  24. 在整数中计数设置位
  25. 将A转换成B所要翻转的位数
  26. 2的下一次幂
  27. 检查一个数是否为3的倍数
  28. 找到奇偶校验
  29. 将与7
  30. 求一个“不”是否等于2的幂
  31. 最右边设置位的位置
  32. 给定数的二进制表示
  33. 交换所有奇数位和偶数位
  34. 找到唯一设置位的位置
  35. 快速乘法的Karatsuba算法
  36. 如何在不使用临时变量的情况下交换两个数字?
  37. 使用按位运算符检查一个数是否为9的倍数
  38. 在一个字节中交换两个字节
  39. 如何关闭数字中的特定位?
  40. 检查一个数字的二进制表示形式是否为回文

关于比特算法的最新文章
比特算法小测验
比特算法的编码实践

图算法:

介绍,DFS和BFS:

  1. 图表及其表示
  2. 宽度的第一个遍历图形
  3. 图的深度优先遍历
  4. 深度优先搜索的应用
  5. 在有向图中检测周期
  6. 检测一个无向图的图形
  7. 在无向图中检测周期
  8. 有向无环图中的最长路径
  9. 拓扑排序
  10. 检查一个给定的图是否是二部图
  11. 蛇梯问题
  12. 双连通分量
  13. 检查一个给定的图是否是树状的

最小生成树:

  1. Prim最小生成树(MST)
  2. 最小生成树问题的应用
  3. 邻接表表示的Prim的MST
  4. Kruskal最小生成树算法
  5. 最小生成树的Boruvka算法

最短路径:

  1. Dijkstra最短路径算法
  2. 邻接表表示的Dijkstra算法
  3. bellman算法
  4. 弗洛伊德沃肖尔算法
  5. 全对最短路径的约翰逊算法
  6. 有向无环图中的最短路径
  7. 一些有趣的最短路径问题
  8. 有向加权图中有k条边的最短路径

连通性:

  1. 查找有向图中两个顶点之间是否有路径
  2. 有向图中的连通性
  3. 图中的连接点(或切点)
  4. 双连通图
  5. 图中的桥
  6. 欧拉路径和电路
  7. 弗勒里打印欧拉路径或电路的算法
  8. 强连通分量
  9. 图的传递闭包
  10. 找出岛屿的数目
  11. 计算从源到目的地的所有可能的行走,有k条边
  12. 有向图中的欧拉电路
  13. 双连通分量
  14. 寻找强连接分量的Tarjan算法

困难的问题:

  1. 图形着色(简介和应用程序)
  2. 图着色的贪心算法
  3. 旅行商问题(朴素动态规划)
  4. 旅行商问题(用MST近似)
  5. 哈密顿周期
  6. 顶点覆盖问题(导论与近似算法)
  7. K中心问题(贪婪近似算法)

最大流量:

  1. 最大流问题的Ford-Fulkerson算法
  2. 求两个顶点之间边不相交路径的最大数目
  3. 求流网络中的最小s-t切割
  4. 最大二分匹配
  5. 信道分配问题

Misc:

  1. 看看这些绳子能不能用链条串成一个圆圈
  2. 给定一个已排序的外来语言字典,找出字符的顺序
  3. 最小割值的卡格算法
  4. 最小割|集2的Karger算法(分析与应用)
  5. 最大匹配|集1的Hopcroft-Karp算法(介绍)
  6. 最大匹配|集2的Hopcroft-Karp算法(实现)
  7. 达到目标字的最短链的长度
  8. 在联系人列表中查找相同的联系人

所有算法在图上
测试在图
图遍历测验
图最短路径测验
图最小生成树小测验
图的编码练习

随机算法:

  1. 期望的线性
  2. 预期的试验次数直到成功
  3. 随机化算法| Set 0(数学背景)
  4. 随机化算法| Set 1(介绍与分析)
  5. 随机算法|设置2(分类和应用程序)
  6. 随机化算法|集3(1/2近似中位数)
  7. 最小割值的卡格算法
  8. 未排序数组|的第K个最小/最大元素
  9. 水库采样
  10. 洗牌给定数组
  11. 从单链表中选择一个随机节点

关于随机算法的最新文章

分支界限法:

  1. 分支绑定|集合1(0/1背包介绍)
  2. 分支和绑定|集合2(实现0/1背包)
  3. 分支定界|集合3(8个难题)
  4. 分支定界|集4(作业分配问题)
  5. 分支定界|集合5 (N皇后问题)
  6. 分支和绑定|套6(旅行推销员问题)

分支机构最近的文章

测试算法:

  1. 分析的算法
  2. 排序
  3. 划分和征服
  4. 贪心算法
  5. 动态规划
  6. 回溯
  7. Misc
  8. NP完全
  9. 搜索
  10. 算法分析(递归)
  11. 递归
  12. 一些算法
  13. 图形遍历
  14. 图形最短路径
  15. 图最小生成树

Misc:

  1. 常见问题算法面试问题|集1
  2. 给定一个O和X的矩阵,求被X包围的最大子方阵
  3. 螺母和螺栓问题(锁和钥匙问题)
  4. 洪水填充算法-如何实现填充()在油漆?
  5. 给定n个约会,找出所有冲突的约会
  6. 检查一个给定的句子是否有一组简单的语法规则
  7. 求要用1替换0的下标,得到二进制数组中最长连续的1序列
  8. 如何检查两个给定的集合是否不相交?
  9. 铁路/巴士站所需最少月台数目
  10. 具有连续元素的最大子数组|的长度
  11. 具有连续元素的最大子数组的长度|集合2
  12. 打印从前n个自然数开始,长度为k的所有递增序列
  13. 给定两个字符串,查找第一个字符串是否是第二个字符串的子序列
  14. 蛇梯问题
  15. 写一个返回输入1的函数,返回1个返回2
  16. 以最小的成本连接n根绳索
  17. 找出给定长度的有效括号表达式的个数
  18. 最长单调递增的子序列大小(N log N):简单实现
  19. 生成所有二进制排列,使所有排列中每个点上的1多于0
  20. 词典标记最小弦旋转
  21. 用它的对和数组构造一个数组
  22. 评估简单表达式的程序
  23. 检查给定字符串中的字符是否可以重新排列形成回文
  24. 打印给定字符串数组中的所有字谜对

请参阅数据结构和高级数据结构用于图,二叉树,BST和链表的算法。

我们将会在这个网页上加入更多的类别和文章。

您可以创建一个新的算法主题,并使用我们的门户与其他极客讨论它实践。见最近添加的问题实践中的算法

我个人的笔记 arrow_drop_up