在上一篇文章中,讨论了访谈中最常问到的关于不同主题的十大算法/问题。
在这篇文章中,涵盖了其余数据结构或算法的十大问题。如果您准备进行编码面试,则必须解决这些问题。
主题:
- 堆叠与排队
- 树/二进制搜索树
- 前缀匹配和滑动窗口
- 堆
- 贪婪算法
- 特里
堆叠与排队
- 下一个更大的元素
- 圆括号
- 股票跨度问题
- 使用两个队列实现堆栈
- 使用两个堆栈实现队列
- 在一个数组中实现2个堆栈
- 在数组中实现k个堆栈
- 实现一个特殊的堆栈,该堆栈在O(1)时间内支持getMin()
- 实施LRU缓存
- 反转堆栈
树/二进制搜索树
- 检查二叉树是否是BST
- 将给定的二叉树转换为双链表
- 有序树遍历而无递归且无栈
- 逐行遍历级别顺序
- 从给定的有序遍历和预遍历遍历构造树
- 根据给定的前置和后置遍历构造完整的二叉树
- 查找二叉树的两个节点之间的距离
- 交换一个BST的两个节点,更正BST
- 打印二叉树的左视图
- 将二叉树展平为链接列表
前缀匹配和滑动窗口
- 平衡指数
- 总和为0的子数组
- 二进制数组中具有相同数量的1和0的子数组
- 大小为k的子数组的最大和
- 每个大小为k的窗口中的不同元素
- 在正数数组中具有给定总和的子数组
- 每个窗口中大小为k的最小元素
- N-bonacci数
- 二进制字符串形式为0 * 1 * 0 *的最长子序列
- 两个二进制数组中具有相同总和的最长跨度
堆
- 中位数为整数流(运行整数)
- 流中的第K个最大元素
- 对几乎排序(或K排序)的数组进行排序
- 数组中的k个最大(或最小)元素
- 合并k个排序的数组
- 外部分类
- 霍夫曼解码
- 由数组的数字组成的两个数字的最小和
- 从k个列表中查找包含元素的最小范围
- 检查给定的二叉树是否为堆
贪婪算法
- 火车站/汽车站所需的最少平台数量
- 一次允许同时执行两个作业的作业调度
- Prim的最小生成树(MST)
- Dijkstra最短路径算法
- 排序输入的有效霍夫曼编码
- 小背包问题
- 图形着色
- 贪婪算法以找到最小数量的硬币
- 最大限度地减少彼此借钱的给定朋友之间的现金流量
- 以最小的成本连接n条绳索
特里
- 在二进制矩阵中查找重复的行
- 断字问题
- 给定的字符串集中最长的公共前缀
- 从文件中找到k个最常见的单词
- 查找给定列表中每个单词的最短唯一前缀
- 最长前缀匹配
- 在整数流中找到给定整数的最大XOR
- 使用Trie的自动完成功能
- 实施电话目录
- 使用后缀Trie计数字符串的不同子字符串