由招聘人员安排。他们总共进行了 3 轮 SDE2
第 1 轮:关于中等难度的 DS-Algo 的 3 个问题
-
给定一棵二叉树,计算单值子树的总数。单值子树是具有相同值的左子树和右子树的子树。
示例: Ans 5(所有叶节点 3 + 子树 2)
2 / \ 2 2 / \ 2 2
Ans:在父级检查子树是否为子树的后序遍历。叶节点本身已经是子树。
-
给定一组未排序的数字。给定一个大小为 k 的窗口。对数组进行分区,使得左子数组的最大和与右子数组的最大和之和最大。只需找到总和,子数组也应该不重叠。
例子:
1 3 5 7 4 1 9 6 8 N = 9 , k = 3 {5 7 4} + {9 6 8} = 39
-
给定一个未排序的数组,求连续数的最长子数组的长度
例子:
7 1 5 8 9 3 4 2
答。形成两个子阵列
1 2 3 4 5 7 8 9
因此,连续数组的长度为 5。
提示:排序是简单的 O(nlogn)。将其改进为 O(n) 时间。使用哈希图
第 2 轮:编写一个包装函数,可以快速检索唯一编号。该函数没有任何参数。给定函数从数据库中获取唯一数字,并且已经实现。 int fetch(int n) –> 获取 n 个唯一值。
Ans:这是一个基于生产者-消费者模式的问题,你必须在这里使用多线程
- 维护 2 个列表。当一个列表变空并从另一个返回时调用 async 。
- 阻塞队列