面试中的10大算法题你知道多少?

面试中的10大算法题你知道多少?_第1张图片

分类

  • 图(Graph)
  • 链表(Linked List)
  • 动态规划(Dynamic Programming)
  • 排序和搜索
  • 树/二叉查找树
  • 数论(Number Theory)
  • 位操作(BIT Manipulation)
  • 字符串/数组

图(Graph)

  1. 广度优先搜索(BFS)
  2. 深度优先搜索(DFS)
  3. 从原顶点到所有顶点的最短路径(Dijkstra)
  4. 任意顶点之间的最短路径(Floy)
  5. 图的周期检测(Union Find)
  6. 最小生成树(Prim)
  7. 最小生成树(Kruskal)
  8. 拓扑排序
  9. Boggle(查找一块字符中所有可能的单词)
  10. Bridges in a Graph

链表

  1. 向链表中插入节点(在一些约束基础上)
  2. 在一个链表中删除一个节点(在一些约束基础上)
  3. 比较两个链表形式的字符串
  4. 添加链表表示的两个数字
  5. 将一个链表合并到另一个链表中的可替代位置
  6. 将给定大小的组中的链表反转
  7. 两个链表的联合和交叉
  8. 检测链表中的循环并删除
  9. 合并排序链表
  10. 在单链表中随机地选择一个节点

动态规划

  1. 最长公共子序列
  2. 最长增长子序列
  3. 编辑距离
  4. 最小分区
  5. 距离覆盖
  6. 矩阵的最长路径
  7. 子集问题
  8. 游戏的最佳策略问题
  9. 0-1背包问题
  10. 布尔括号问题

排序和搜索

  1. 二分查找
  2. 在排序和旋转数组中搜索元素
  3. 冒泡排序
  4. 插入排序
  5. 归并排序
  6. 堆排序(二叉堆)
  7. 快速排序
  8. 插值搜索
  9. 在排序数组找到第k个最小/最大元素
  10. 给定一个排序数组和一个x数,在数组中求一个与x最接近的数组.

树/二叉查找树

  1. 查找一个二叉树的最小深度
  2. 在二叉树中的最大路径和
  3. 检查一个给定的数组可以表示先序遍历二叉搜索树
  4. 检查二叉树是否是一个完整的二叉树
  5. 二叉树底部视图
  6. 在二叉树的视图中打印节点
  7. 移除根到长度的叶子路径的节点
  8. 二叉搜索树中的最小公共祖先
  9. 判断一个二叉树是否是另一个二叉树的子树
  10. 完美二叉树的反向交替水平

数论(Number Theory)

  1. 模幂运算
  2. 模反元素
  3. 素性测试|集2(Fermat Method)
  4. euler' S函数(0)
  5. 埃拉托色尼筛选法
  6. 凸多边形
  7. 基本和扩展的欧氏算法
  8. 分段筛
  9. 中国余数定理
  10. 卢卡斯定理

位操作(BIT Manipulation)

  1. 最大子阵列异或
  2. 神奇的数字
  3. 所有对之间的比特差的总和
  4. 交换所有的赔率,甚至位
  5. 再到出现一次的元素
  6. 给定数的二进制表示
  7. 计数总数在1到n的所有位数
  8. 数的旋转位
  9. 计算将A转换成B的数的位数
  10. 查找下一个稀疏数

字符串/数组

  1. 反转数组而不影响特殊字符
  2. 所有可能的回文分区
  3. Count triplets with sum smaller than a given value
  4. Convert array into Zig-Zag fashion
  5. 从两个给定的排序数组的替换元素生成所有可能的排序数组
  6. 毕达哥拉斯三重数组
  7. 与相邻元素的最大子阵列的长度
  8. 求不可表示为给定数组任意子集之和的最小正整数值
  9. 最小的子数组之和大于给定值
  10. 股票购买销售利润最大化

查看原文

欢迎关注我的公众号:

你可能感兴趣的:(面试中的10大算法题你知道多少?)