PS1
一个华裔,一个烙印mm,面试过程很nice
Pow(x,n)
Insert Intervals
Leetcode 原题
PS2
一个乌克兰gg,也感觉不错,然后烙印..一上来就感觉阴深深的。
1. string matching的题,具体忘了,很简单;
2. 带 parent member 的binary tree (更正一下,之前手抖写成bst了),找最深的
common ancestor. 就栽在这道题上,感觉
被黑了。
A
/ \
B C
/ \
D E
/ \
G F
commonAncestor(D, F) = B
commonAncestor(C, G) = A
题目出来马上问烙印面试官是不是,如果是 输入是 B F 输出是不是B。 回答:
不是,应该是 B的parent A。 额 给雷到了。 然后马上说思路,用一个hashset,
保持一个node从自身到root的路径,然后第二节点往上traverse,遇到在hashset中的
节点,就找到了最深的parent。 复杂度 O(n), n 是深度。 面试官马上制止我这个思
路说,如果树很大,traverse到root的话,很费时间。要我想其他的方法。
然后就说到了一个 往上traverse的方法, 思路就是 例如 D F 的最深公共parent
,就是D 和F的parent E 的公共parent。后面的问题就变成了哪一个该往上 traverse
, commonAncestor(one, two.parent) 还是 commonAncestor(one.parent, two)。烙
印面试官也说,close close 了。 感觉是这个方向没错。 然后我提到了这个需要知道
one two 的深度,然后深的一个往上走。 面试官没发言。 但是这样子的话,算法时间
复杂度就跟之前提出的方法一样了。 所以接下来没这样想,然后时间到了。。
跟后面那个烙印gg交流很困难。。 最后给recruiter的feedback也是这个是
negative的。面试完后回来想想,感觉那样的话,必须要知道树的深度。 感慨自己哪
一种方法都没有坚持到底给出一个完整的solution。
求版上各位大神帮忙分析下这个题到底该如何做,然后是不是被黑了。
谢谢!