📜  面试题中的十大算法套装2

📅  最后修改于: 2021-05-24 17:50:29             🧑  作者: Mango

在上一篇文章中,讨论了访谈中最常问到的关于不同主题的十大算法/问题。

在这篇文章中,涵盖了其余数据结构或算法的十大问题。如果您准备进行编码面试,则必须解决这些问题。

主题

  • 堆叠与排队
  • 树/二进制搜索树
  • 前缀匹配和滑动窗口
  • 贪婪算法
  • 特里

堆叠与排队

  1. 下一个更大的元素
  2. 圆括号
  3. 股票跨度问题
  4. 使用两个队列实现堆栈
  5. 使用两个堆栈实现队列
  6. 在一个数组中实现2个堆栈
  7. 在数组中实现k个堆栈
  8. 实现一个特殊的堆栈,该堆栈在O(1)时间内支持getMin()
  9. 实施LRU缓存
  10. 反转堆栈

树/二进制搜索树

  1. 检查二叉树是否是BST
  2. 将给定的二叉树转换为双链表
  3. 有序树遍历而无递归且无栈
  4. 逐行遍历级别顺序
  5. 从给定的有序遍历和预遍历遍历构造树
  6. 根据给定的前置和后置遍历构造完整的二叉树
  7. 查找二叉树的两个节点之间的距离
  8. 交换一个BST的两个节点,更正BST
  9. 打印二叉树的左视图
  10. 将二叉树展平为链接列表

前缀匹配和滑动窗口

  1. 平衡指数
  2. 总和为0的子数组
  3. 二进制数组中具有相同数量的1和0的子数组
  4. 大小为k的子数组的最大和
  5. 每个大小为k的窗口中的不同元素
  6. 在正数数组中具有给定总和的子数组
  7. 每个窗口中大小为k的最小元素
  8. N-bonacci数
  9. 二进制字符串形式为0 * 1 * 0 *的最长子序列
  10. 两个二进制数组中具有相同总和的最长跨度

  1. 中位数为整数流(运行整数)
  2. 流中的第K个最大元素
  3. 对几乎排序(或K排序)的数组进行排序
  4. 数组中的k个最大(或最小)元素
  5. 合并k个排序的数组
  6. 外部分类
  7. 霍夫曼解码
  8. 由数组的数字组成的两个数字的最小和
  9. 从k个列表中查找包含元素的最小范围
  10. 检查给定的二叉树是否为堆

贪婪算法

  1. 火车站/汽车站所需的最少平台数量
  2. 一次允许同时执行两个作业的作业调度
  3. Prim的最小生成树(MST)
  4. Dijkstra最短路径算法
  5. 排序输入的有效霍夫曼编码
  6. 小背包问题
  7. 图形着色
  8. 贪婪算法以找到最小数量的硬币
  9. 最大限度地减少彼此借钱的给定朋友之间的现金流量
  10. 以最小的成本连接n条绳索

特里

  1. 在二进制矩阵中查找重复的行
  2. 断字问题
  3. 给定的字符串集中最长的公共前缀
  4. 从文件中找到k个最常见的单词
  5. 查找给定列表中每个单词的最短唯一前缀
  6. 最长前缀匹配
  7. 在整数流中找到给定整数的最大XOR
  8. 使用Trie的自动完成功能
  9. 实施电话目录
  10. 使用后缀Trie计数字符串的不同子字符串