在上一篇文章中,讨论了面试中最常被问到的关于不同主题的前 10 大算法/问题。
在这篇文章中,涵盖了其余数据结构或算法的前 10 个问题。如果您正在准备编码面试,则必须解决这些问题。
主题:
- 堆栈和队列
- 树/二叉搜索树
- 前缀匹配和滑动窗口
- 堆
- 贪心算法
- 特里
堆栈和队列
- 下一个更大的元素
- 平衡括号
- 库存跨度问题
- 使用两个队列实现一个堆栈
- 使用两个栈实现一个队列
- 在一个数组中实现 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 个最常用的词
- 为给定列表中的每个单词查找最短的唯一前缀
- 最长前缀匹配
- 在整数流中找到给定整数的最大异或
- 使用 Trie 的自动完成功能
- 实施电话簿
- 计数使用后缀特里字符串的不同子的
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。