第 1 轮(在线):
由 5 个部分组成:
1) 10 道调试题
2)2个编码问题:- i)https://www.geeksforgeeks.org/search-in-row-wise-and-column-wise-sorted-matrix/
ii) https://www.geeksforgeeks.org/check-if-a-binary-tree-is-subtree-of-another-binary-tree/
3) 性格问题
4) 逻辑推理题
第 2 轮(技术 1) – 远程:
1)自我介绍
2) 问了 2 个编码问题
i) https://www.geeksforgeeks.org/minimum-steps-to-make-the-product-of-the-array-equal-to-1/
基本上,您必须找到将每个非负元素更改为 1 并将负元素更改为 -1 的操作。通过采用绝对差异来计算每个元素的操作。如果负数的计数为奇数且没有零,则将运算增加 2。
ii)在二叉树中,找到 2 个节点之间的路径。有一个修改,树的高度是无限的,树不在内存中。
树的结构是这样的:- 1
2 3
4 5 6 7….. 我们得到 2 个长整数作为输入,我们返回一个向量,它是它们之间的路径。
我和他讨论了从“节点到根”而不是一般的“根到节点”。他问我如何使用地图和堆栈找到 LCA。
他说这个方法是对的,但他不想使用 map/stack 或任何派生的 DS。仅使用原始 DS。使用数组解决了它。我给出了一个更优化 map-stack 方法的案例。所以他让我分析时间和空间的方法,并解释为什么会这样。
在最坏的情况下,两种方法的时间和空间都是 O(log(n))。对于一般情况和运行时 map-stack 会更加优化,他同意这一点。他让我编写这两种方法中的任何一种。我对数组进行了编码,因为它更易于实现。然后他问我是否有任何问题,并结束了采访。
第 3 轮(技术 2) – 远程:
没有介绍,没有闲聊,直接编码
1. https://www.geeksforgeeks.org/count-distinct-elements-in-every-window-of-size-k/
对 k & N 没有限制,并被告知处理所有可能的极端情况。
讨论方法 -> 编码 -> 批准 -> 讨论时间复杂度以及为什么它是 O(n)
2. https://www.geeksforgeeks.org/convert-a-given-tree-to-sum-tree/
解释方法->她询问将使用哪种遍历以及为什么->后序,因为我们首先计算左右孩子然后处理根->编码->批准
3. https://www.geeksforgeeks.org/trapping-rain-water/
给出了具有 2 个数组的解决方案,即左最大和右最大。她告诉我在一个额外的阵列中进行。花了5分钟后做了。然后她告诉我在恒定的空间里做。
我什至不认为这是可能的。在尝试了 10-12 分钟后,我告诉她我无处可去。她告诉我编写单数组方法。
编码它 -> 有一些逻辑错误 -> 她给出了错误可能是什么的方向并一起进行了试运行 -> 一段时间后解决了它并且代码被批准了。
她告诉我,我们有时间考虑如何在恒定空间内做到这一点。 10分钟后,时间到了,我什么也没想出来,面试就结束了,
没有项目、主题、人力资源问题
判决:- 选择