亚马逊专访 |第 9 组(答案)
这篇文章是关于亚马逊面试中提出的问题的答案 |第 9 组。它包含指向 geeksforgeeks 上提供的一些解决方案的链接。我也写了我在采访中回答的答案。希望对读者有所帮助。
在线编程回合:(5种方法,2小时)
3) BST 中的第 k 个最小元素
5)最长递增子序列
电话面试一:
1)最大1s的行
2)字谜
3)旋转和删除
电话采访2:
3)找到每个其他点到 P 的距离。然后使用大小为 K 的最大堆。
面谈一:(海得拉巴,日期:2012 年 11 月 8 日)
2)我给出了以下解决方案(在面试官的帮助下):
1. 对于每个集合,找出它与之相交的集合的数量。还要维护那些设置的索引。
2. 删除具有最大交集数的集合。并更新剩余的数字。
3. 重复步骤 2,直到我们有任何集合与任何其他集合有交集。最后,我们将有解决方案。 (仍然不确定最优性)。
我们可以将解决方案与图联系起来:删除一些节点,使剩余的所有节点都是孤立节点。
搜索:为了提高搜索效率,我们可以使用每个集合的位来构建 trie 数据结构。这样我们就可以更快地找到交叉点。
面对面访谈 2(与经理):
1)我尝试了一段时间。然后面试官给了我公式。在所有情况下,数字都是 1+ceil((NW)/S)。
对于问题的第二部分,简单的解决方案是在每个窗口中找到最小值。但是我们可以优化,以便我们可以利用以前的结果/以前的最小值。
位最优:我创建了一个 W 元素的最小堆。但是堆包含数组元素的索引,而不是数组本身的值。索引根据它们在数组中的值存储在堆中。然后对于一个新窗口,线性搜索堆(堆是数组形式),用新索引替换旧索引(不再在新窗口中),并调整堆中的索引。调整所有新索引后,我们将在根处为新窗口设置新的最小值。 (不确定解决方案带来的复杂性是否值得!)
面谈3:
2)我给出了一个基于 trie 数据结构的解决方案,使用字符的字符串。但他建议基于字符串本身构建 trie。但是,我不能那样想。
3)线性搜索。二进制搜索。
面谈4(与开户单位经理):
2)我说,我们可以组织一个在线编码比赛。人们会注册,我们将获得详细信息。他回答说,太贵了。然后我说,我们可以推迟比赛!
祝一切顺利!