由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Palantir 电面面经求指教
相关主题
find the k-th maximum node in a binary search tree 有疑问G家电面(已挂)
bloomberg onsite题Haker Rank Median...
有人能解释下Generate Parentheses的DP解法么?关于BST traverse的复杂度
请问排过序的list组建一个bst 复杂度是多少?问道题,binary tree里有一个有indegree 2
这个题目有什么trickDepth-First-Search
用queue 做树的广度优先遍历,空间复杂度是多少?在版上看到的G题
考算法可以用stl吗?Google面经
facebook实习面经兼求bless有向图判断有无环
相关话题的讨论汇总
话题: node话题: count话题: dag话题: rank话题: return
进入JobHunting版参与讨论
1 (共1页)
l*********4
发帖数: 112
1
有一个binary directed acyclic graph, 每个node存有一个字符,有一个左节点和一
个右节点。
(node定义如下:
Node {
Node L;
Node R;
char ch;
}

这样如果in-order traverse这个DAG,就会得到一个string。例子如下:假设一个DAG
只有两个node,分别装着A和B这两个字符。假设Node A的左右两条边都指向Node B:
A (root node)
||
B
那么这个存储的string就是BAB
现在假设已经有了一个这样的DAG, 请写一个函数,返回这个string的第k个字符。要求
复杂度不能是exponential的。。。
我先写了个in order 的遍历。面试官就问我如果n个node,string最长可以是多少
我觉得是2^n-1
面试官说,那么traverse的话最坏情况复杂度就是O(2^n),不符合要求~
谢谢大家指教!
l********s
发帖数: 358
2
为什么不能遍历,遍历的复杂度又不是O(2^n)
s*****j
发帖数: 35
3
没懂。。。这不就是一个in order traversal么?
只不过因为是dag所以你要一个hash set来keep track 哪个是visited
l*********4
发帖数: 112
4
因为面试官说如果有n个node,字符最长可以是2^n-1
遍历的话最坏情况就是O(2^n)了。。。

【在 l********s 的大作中提到】
: 为什么不能遍历,遍历的复杂度又不是O(2^n)
l*********4
发帖数: 112
5
面试官先问我如果n个node,string最长可以是多少
我觉得是2^n-1
于是面试官说,traverse的话最坏情况复杂度就是O(2^n)啦,不符合要求。于是我就无
语凝噎了。。。
另外,遍历时访问过的node是可以再次访问的。比如那个两个节点的例子
A
||
B
A是root
in order 先访问B,再访问A,可是A的right edge指向的还是B,于是要再访问B。所以
这两个node的图表示的string是BAB

【在 s*****j 的大作中提到】
: 没懂。。。这不就是一个in order traversal么?
: 只不过因为是dag所以你要一个hash set来keep track 哪个是visited

e******u
发帖数: 1067
6
太难了,要是我直接放弃了

【在 l*********4 的大作中提到】
: 面试官先问我如果n个node,string最长可以是多少
: 我觉得是2^n-1
: 于是面试官说,traverse的话最坏情况复杂度就是O(2^n)啦,不符合要求。于是我就无
: 语凝噎了。。。
: 另外,遍历时访问过的node是可以再次访问的。比如那个两个节点的例子
: A
: ||
: B
: A是root
: in order 先访问B,再访问A,可是A的right edge指向的还是B,于是要再访问B。所以

k****s
发帖数: 16
7
被面试官问的套进去了吧
>> traverse的话最坏情况复杂度就是O(2^n)
traverse树是O(n), 枚举每个字符才是O(2^n).
traverse树的时候,记住左孩子的count就可以,右孩子相同的话,直接加count,不用
一个字符一个字符生成就不是O(2^n).
s******7
发帖数: 1758
8
有点意思, 最坏 A=B=C=D, 确实字符串长度是 2^n
不过,这个跟fibonachi数列一样,你可以用dp保存sub的str,遇到=就copy一下就可以
了,所以还是O(n)就可以了
k***s
发帖数: 6
9
感觉应该是O(n)。以当前节点为inorder node的字符串长为left + 1 + right, 其中
left和right都可以只算一次然后用map存起来。
伪代码如下,感觉写得有点恶...
Character c;
Map map;
private int count(Node node, int rank) {
if (rank <= 0) {
return 0;
} else if (node == null) {
return 0;
} else if (map.containsKey(node)) {
return map.get(node);
}
int count = 1;
int leftCount = count(node.left, rank);
if (leftCount == -1) {
return -1;
} else if ((count += leftCount) == rank) {
c = node.ch;
return -1;
}
int rightCount += count(node.right, rank - count);
if (rightCount == -1) {
return -1;
} else if ((count += rightCount) == rank) {
c = node.ch;
return -1;
}
map.put(node, count);
return count;
}
public Character find(Node node, int rank) {
c = null;
map = new HashMap();
count(node, rank);
return c;
}
l***m
发帖数: 16
10
很有趣的一个题
产生exp复杂度的原因是当Node L == Node R的时候,只要一个input node却导致节
点数*2了
所以可以给每个节点存储以当前节点为根的字符串的长度LEN(root)
LEN(root) = LEN(L) + LEN(R)
就像楼上说的用map把节点的count存起来,这样L==R的时候R就直接拿结果就好了
因为没有环,O(n)就能遍历这个树,得到每个节点的LEN
要找第K个字符,root的位置是r=LEN(L) + 1,比K小那就找R里的K - r,比K大就找L
里的K,不然返回就好。复杂度是树的高度。

DAG

【在 l*********4 的大作中提到】
: 有一个binary directed acyclic graph, 每个node存有一个字符,有一个左节点和一
: 个右节点。
: (node定义如下:
: Node {
: Node L;
: Node R;
: char ch;
: }
: )
: 这样如果in-order traverse这个DAG,就会得到一个string。例子如下:假设一个DAG

G*****n
发帖数: 19
11
请问DAG的in order traversal 什么是停止条件?比如树的inorder 遇到叶结点(左右
child都是null)就可以返回当前recursion
那图的呢?
r********y
发帖数: 30
12
我怎么感觉复杂度应该是O(2*n)=O(n)呢?一个节点两条边,看题意最多就走完这两次
吧应该?不知道哪里理解的不对
l**********1
发帖数: 415
13
lz这个题里的树都是这种结构的a=b=c还是正常的binary tree和这种结构混杂的?就
是说有可能一个node左右ponter指向不同node么?如果都是这种结构的a=b=c,还有O
(n)的方法,不是感觉就没了
1 (共1页)
进入JobHunting版参与讨论
相关主题
有向图判断有无环这个题目有什么trick
贡献一道G家电面题用queue 做树的广度优先遍历,空间复杂度是多少?
Palantir 和 Square 哪个前途好点?考算法可以用stl吗?
请教一个cracking coding interview书上的问题facebook实习面经兼求bless
find the k-th maximum node in a binary search tree 有疑问G家电面(已挂)
bloomberg onsite题Haker Rank Median...
有人能解释下Generate Parentheses的DP解法么?关于BST traverse的复杂度
请问排过序的list组建一个bst 复杂度是多少?问道题,binary tree里有一个有indegree 2
相关话题的讨论汇总
话题: node话题: count话题: dag话题: rank话题: return