由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - T电面面经
相关主题
G家intern电面新鲜面经我来问个面经:打印binary tree 从root到leaf的所有path
求教Leetcode题目:Lowest Common Ancestor请教LEETCODE讲解部分的LCA一道题的变种。。
Interview question::yelp 电面面经应该已跪了
问一个题目leetcode 运行结果和eclipse不一样???
再问个C++的基础问题(in order traversal)贡献Google 电面面经
帮我看一下5行代码豁出去了,决定怒刷100题
Flatten Binary Tree to Linked List的recursive解法刚看了geekforgeek烙印代码果然一坨屎逻辑混乱
min depth binary tree用recursive解法一般能过关麽?有人同看Populating Next Right Pointers in Each Node II的recursive写法么?
相关话题的讨论汇总
话题: treenode话题: hashtable话题: root话题: node话题: left
进入JobHunting版参与讨论
1 (共1页)
i******s
发帖数: 301
1
一面
一图,找出所有connected component
e.g. A->B->C-> D
|
--> E
F -> G
输出就是 [(A, B, C, D, E), (F, G)]
二面
lowest common ancestor
中间有很多聊天。第一题很简单,找出没有dependency的node, 然后dfs; 第二题是烂
题了,用了hashtable的做法,最简单。不过做之前讨论了多种做法之间的优劣。
本来题目应该是onsite的,可惜onsite都是聊天,没什么有价值的新题。对了,组是数
据分析组
FYI, twitter食堂真心赞,感觉应该秒杀99.99%的码工公司
P*******b
发帖数: 1001
2
真不知道hashtable怎么做这道题,指点一下?

【在 i******s 的大作中提到】
: 一面
: 一图,找出所有connected component
: e.g. A->B->C-> D
: |
: --> E
: F -> G
: 输出就是 [(A, B, C, D, E), (F, G)]
: 二面
: lowest common ancestor
: 中间有很多聊天。第一题很简单,找出没有dependency的node, 然后dfs; 第二题是烂

i******s
发帖数: 301
3
你用hashtable扫一边tree, 记录下每个node的parent和所在的level。然后就简单啦,
对于给定的两个node, 让他们到同一层,然后一同往上走,所有信息都在hashtable里
。虽然占space,但好处是多次查询可以很快,而且code很简单,思路也直接。
recursion的做法有点绕。

【在 P*******b 的大作中提到】
: 真不知道hashtable怎么做这道题,指点一下?
P*******b
发帖数: 1001
4
明白了,从来没有这么想过这个题.
不过我觉得代码量其实比recursion的多很多阿
thanks

【在 i******s 的大作中提到】
: 你用hashtable扫一边tree, 记录下每个node的parent和所在的level。然后就简单啦,
: 对于给定的两个node, 让他们到同一层,然后一同往上走,所有信息都在hashtable里
: 。虽然占space,但好处是多次查询可以很快,而且code很简单,思路也直接。
: recursion的做法有点绕。

p*****p
发帖数: 379
5
能贴下code么?我怎么感觉还是recursion好解……
TreeNode *findLCA(TreeNode *root, TreeNode *n1, TreeNode *n2) {
if (!root) return NULL;
if (root == n1 || root == n2) return root;
TreeNode *left = findLCA(root->left, n1, n2);
TreeNode *right = findLCA(root->right, n1, n2);
if (left && right) return root;
else if (!left && !right) return NULL;
return left ? left : right;
}

【在 i******s 的大作中提到】
: 你用hashtable扫一边tree, 记录下每个node的parent和所在的level。然后就简单啦,
: 对于给定的两个node, 让他们到同一层,然后一同往上走,所有信息都在hashtable里
: 。虽然占space,但好处是多次查询可以很快,而且code很简单,思路也直接。
: recursion的做法有点绕。

p*****p
发帖数: 379
6
我知道你啥意思了……你的是有parent指针的吧

【在 i******s 的大作中提到】
: 你用hashtable扫一边tree, 记录下每个node的parent和所在的level。然后就简单啦,
: 对于给定的两个node, 让他们到同一层,然后一同往上走,所有信息都在hashtable里
: 。虽然占space,但好处是多次查询可以很快,而且code很简单,思路也直接。
: recursion的做法有点绕。

P*******b
发帖数: 1001
7
不用parent指针,我觉得他的意思是先做一个level order吧。

【在 p*****p 的大作中提到】
: 我知道你啥意思了……你的是有parent指针的吧
p*****p
发帖数: 379
8
那样的话,在hashmap里怎么跟踪parent呢?我就是这个不知道怎么弄的

【在 P*******b 的大作中提到】
: 不用parent指针,我觉得他的意思是先做一个level order吧。
i******s
发帖数: 301
9
好吧,那是因为你练过吧。否则最后那个if else确定返回值的时候不容易想对吧,而
且解释正确性也要花点时间。hashtable代码是略长,不过简单直接啊,而且多次查询
有优势。我是问了interviewer他想要那种,他说那你用hashtable吧

【在 p*****p 的大作中提到】
: 能贴下code么?我怎么感觉还是recursion好解……
: TreeNode *findLCA(TreeNode *root, TreeNode *n1, TreeNode *n2) {
: if (!root) return NULL;
: if (root == n1 || root == n2) return root;
: TreeNode *left = findLCA(root->left, n1, n2);
: TreeNode *right = findLCA(root->right, n1, n2);
: if (left && right) return root;
: else if (!left && !right) return NULL;
: return left ? left : right;
: }

t*********h
发帖数: 941
10
connected component的输入什么格式阿

【在 i******s 的大作中提到】
: 一面
: 一图,找出所有connected component
: e.g. A->B->C-> D
: |
: --> E
: F -> G
: 输出就是 [(A, B, C, D, E), (F, G)]
: 二面
: lowest common ancestor
: 中间有很多聊天。第一题很简单,找出没有dependency的node, 然后dfs; 第二题是烂

相关主题
帮我看一下5行代码我来问个面经:打印binary tree 从root到leaf的所有path
Flatten Binary Tree to Linked List的recursive解法请教LEETCODE讲解部分的LCA一道题的变种。。
min depth binary tree用recursive解法一般能过关麽?yelp 电面面经应该已跪了
进入JobHunting版参与讨论
w****x
发帖数: 2483
11

同问图的表示方式

【在 t*********h 的大作中提到】
: connected component的输入什么格式阿
r*****e
发帖数: 146
12
标答啊,如果面试官是老中的话,这种答案是否算个暗号? 大家都是做过看过leet
code滴。。。

【在 p*****p 的大作中提到】
: 能贴下code么?我怎么感觉还是recursion好解……
: TreeNode *findLCA(TreeNode *root, TreeNode *n1, TreeNode *n2) {
: if (!root) return NULL;
: if (root == n1 || root == n2) return root;
: TreeNode *left = findLCA(root->left, n1, n2);
: TreeNode *right = findLCA(root->right, n1, n2);
: if (left && right) return root;
: else if (!left && !right) return NULL;
: return left ? left : right;
: }

c********t
发帖数: 5706
13
hashtable key是node, value是parent和level ?

【在 i******s 的大作中提到】
: 你用hashtable扫一边tree, 记录下每个node的parent和所在的level。然后就简单啦,
: 对于给定的两个node, 让他们到同一层,然后一同往上走,所有信息都在hashtable里
: 。虽然占space,但好处是多次查询可以很快,而且code很简单,思路也直接。
: recursion的做法有点绕。

w****a
发帖数: 710
14
bless!
楼主拿到offer了?
d**********x
发帖数: 4083
15
第一题要是全都是圈,怎么找没有dependency的node。。。
直接dfs,并查集即可

【在 i******s 的大作中提到】
: 一面
: 一图,找出所有connected component
: e.g. A->B->C-> D
: |
: --> E
: F -> G
: 输出就是 [(A, B, C, D, E), (F, G)]
: 二面
: lowest common ancestor
: 中间有很多聊天。第一题很简单,找出没有dependency的node, 然后dfs; 第二题是烂

i******s
发帖数: 301
16
我就是这么做的

【在 c********t 的大作中提到】
: hashtable key是node, value是parent和level ?
i******s
发帖数: 301
17
那就直接返回所有node。并查集不是要额外O(n)空间么,再说也没必要啊这里

【在 d**********x 的大作中提到】
: 第一题要是全都是圈,怎么找没有dependency的node。。。
: 直接dfs,并查集即可

d**********x
发帖数: 4083
18
hashtable 也需要额外 O(n)空间吧?我没仔细看那个实现。。

【在 i******s 的大作中提到】
: 那就直接返回所有node。并查集不是要额外O(n)空间么,再说也没必要啊这里
i******s
发帖数: 301
19
我错了,我以为你在说第一题。不过第二题的话,如果用并查集,只能对特定的两个
node求ancestor吧,那样O(n)空间还不如直接用递归。我没想出来弄出一个并查集后,
怎么对任意两个node都能快速求出ancestor。hashtable是费O(n)空间,唯一好处就是
对任意两个node,最坏log(n)就能出结果,当然假设tree is balanced

【在 d**********x 的大作中提到】
: hashtable 也需要额外 O(n)空间吧?我没仔细看那个实现。。
d**********x
发帖数: 4083
20
我错了。。。
我以为他说的是第二题。。。
是这样的,有向图中dfs求单连通子集(虽然不太严谨)的一个问题是每次接触到一个
新的集合的时候,要回溯并update当前的子集,比如:
8->9-|
-> 1->2->3->4->5->6->7
c->d-|
这样,假如开始的时候是从8开始的,一路搜到7,全部标记为A
然后从c开始搜索,搜到3之后还要回溯到c去标记,这样可能会略慢
但是无所谓了,反正复杂度都一样。。

【在 i******s 的大作中提到】
: 我错了,我以为你在说第一题。不过第二题的话,如果用并查集,只能对特定的两个
: node求ancestor吧,那样O(n)空间还不如直接用递归。我没想出来弄出一个并查集后,
: 怎么对任意两个node都能快速求出ancestor。hashtable是费O(n)空间,唯一好处就是
: 对任意两个node,最坏log(n)就能出结果,当然假设tree is balanced

相关主题
leetcode 运行结果和eclipse不一样???刚看了geekforgeek烙印代码果然一坨屎逻辑混乱
贡献Google 电面面经有人同看Populating Next Right Pointers in Each Node II的recursive写法么?
豁出去了,决定怒刷100题Lowest Common Ancestor
进入JobHunting版参与讨论
c*********e
发帖数: 644
21
What is T??????

【在 i******s 的大作中提到】
: 一面
: 一图,找出所有connected component
: e.g. A->B->C-> D
: |
: --> E
: F -> G
: 输出就是 [(A, B, C, D, E), (F, G)]
: 二面
: lowest common ancestor
: 中间有很多聊天。第一题很简单,找出没有dependency的node, 然后dfs; 第二题是烂

e***s
发帖数: 799
22
楼主,第二题能不能贴个CODE 看看?
x*****0
发帖数: 452
23
mark
1 (共1页)
进入JobHunting版参与讨论
相关主题
有人同看Populating Next Right Pointers in Each Node II的recursive写法么?再问个C++的基础问题(in order traversal)
Lowest Common Ancestor帮我看一下5行代码
请问二叉搜索树如何找到两个点的最近祖先?Flatten Binary Tree to Linked List的recursive解法
狗狗家onsite面经min depth binary tree用recursive解法一般能过关麽?
G家intern电面新鲜面经我来问个面经:打印binary tree 从root到leaf的所有path
求教Leetcode题目:Lowest Common Ancestor请教LEETCODE讲解部分的LCA一道题的变种。。
Interview question::yelp 电面面经应该已跪了
问一个题目leetcode 运行结果和eclipse不一样???
相关话题的讨论汇总
话题: treenode话题: hashtable话题: root话题: node话题: left