一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 3393|回复: 41
收起左侧

Google MTV Onsite面经

[复制链接] |试试Instant~ |关注本帖
燧日岚烟 发表于 2016-10-12 04:41:55 | 显示全部楼层 |阅读模式

2017(10-12月) 码农类 硕士 全职@Google - 内推 - Onsite |Otherfresh grad应届毕业生

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
上周在MTV的onsite。攒人品 求过!!!
面试四轮 全是算法题。

1. 国人小哥  
   给一个binary tree T有n个Nodes, 一个binary tree S有m个Nodes. 找到 S下是否subtree跟T一样。所有的Nodes非unique,可重复。 答到最后最优解时间复杂度O(m)

. 1point 3acres 璁哄潧
2. ABC
   给一个unsorted array,定义一个feature:给一个index i, 找到number of all possible indexes j, such that j > i, and array[j] > array。 题目是找到这个array里对所有的indexes i, 最大的number 是多少。 期望的最优解要求O(nlogn). From 1point 3acres bbs
-google 1point3acres
3. ABC
   给一个directed graph,每一个node带有颜色属性。 颜色有红绿蓝三种。定义valid path:一条path 红色点 之后有绿色点 为valid(隔多远都行)。在这条path上,那个红色点之前的点(包括红点),定义为valid point。写一个function能找到这样的valid point.鏈枃鍘熷垱鑷1point3acres璁哄潧

4. ABC
  给一个unsorted array, 给定index i and j, a) 找到i j 之间点的值的和   b)找到 i  j 之间点的最大值。 期望的最优解 a) O(n)  b) 小于 n2. 1point3acres.com/bbs
. From 1point 3acres bbs
攒人品  求过!!!!!!!!!!!!!求大米!!!!!!!!!!


补充内容 (2016-10-12 04:44):
第四题 b) 时间复杂度和空间复杂度 要求都小于n2. more info on 1point3acres.com
. 鍥磋鎴戜滑@1point 3 acres
补充内容 (2016-10-13 01:28):
据坛友补充, 第二题类似LC 315 Count of Smaller Numbers After Self;
第四题解法是 http://www.lintcode.com/en/problem/segment-tree-query/
.鏈枃鍘熷垱鑷1point3acres璁哄潧
补充内容 (2016-10-18 00:18):-google 1point3acres
已跪 =_=

评分

3

查看全部评分

本帖被以下淘专辑推荐:

raychien 发表于 2016-10-13 12:27:16 | 显示全部楼层
33847682 发表于 2016-10-13 05:02
话说这个做法我想过 不过不对吧?有没有一种可能是两个序列匹配了 但是因为s树的节点值是可以重复的导致 ...

確實想錯了,下面這個例子,in-order 是 7102359 包含了 102,但是不是同一棵樹,加了#也一樣。如果要用KMP,且要確保同一棵樹的話,只能 in-order + pre-order 或 in-order + post-order,兩種 traversal 都可用 KMP 找到的話就是同一棵樹。但是前提是所有 tree nodes 要是 unique,不能有 duplicate,所以這題不適用。

   0               5
/   \           /   \
1    2         1    9
               /   \
              7    2
                  /   \
                 0    3
回复 支持 1 反对 0

使用道具 举报

uuuu99199 发表于 2016-10-12 05:28:14 | 显示全部楼层
祝楼主拿到offer!
想问一下第一题怎么做到O(m),只中序遍历可以吗?
回复 支持 反对

使用道具 举报

 楼主| 燧日岚烟 发表于 2016-10-12 09:37:32 | 显示全部楼层
uuuu99199 发表于 2016-10-12 05:28
祝楼主拿到offer!
想问一下第一题怎么做到O(m),只中序遍历可以吗?

只中序遍历要O(mn)的时间

需要自己想个新的数据结构,给每个node加一个attribute: count该node下subtree里node的个数。再来match
回复 支持 反对

使用道具 举报

ashun 发表于 2016-10-12 09:53:39 | 显示全部楼层
请问第四题b)直接遍历i~j之间的元素不行吗?我好像没太理解。。。。。
回复 支持 反对

使用道具 举报

william_gong 发表于 2016-10-12 10:03:10 | 显示全部楼层
燧日岚烟 发表于 2016-10-12 09:37
只中序遍历要O(mn)的时间

需要自己想个新的数据结构,给每个node加一个attribute: count该node下subtr ...

没太看懂啊。。。为啥加了这个attribute可以加速算法?
回复 支持 反对

使用道具 举报

a529384424 发表于 2016-10-12 10:07:06 | 显示全部楼层
楼主可不可以解释下第二题,不是特别明白
回复 支持 反对

使用道具 举报

william_gong 发表于 2016-10-12 10:10:15 | 显示全部楼层
ashun 发表于 2016-10-12 09:53
请问第四题b)直接遍历i~j之间的元素不行吗?我好像没太理解。。。。。

时间复杂度太高,应该是用segment tree来加速的
回复 支持 反对

使用道具 举报

uuuu99199 发表于 2016-10-12 10:22:03 | 显示全部楼层
燧日岚烟 发表于 2016-10-12 09:37. from: 1point3acres.com/bbs
只中序遍历要O(mn)的时间. more info on 1point3acres.com

需要自己想个新的数据结构,给每个node加一个attribute: count该node下subtr ...

不是太理解呃,这个应该不影响worst case吧?.1point3acres缃
我以为是中序+KMP算法呢,但是感觉KMP有点复杂。。。
面试官认可你的做法了吗?求教
回复 支持 反对

使用道具 举报

omega094 发表于 2016-10-12 13:01:18 | 显示全部楼层
最后一问我觉得应该是建立一个tree
然后root 就是 整个array 最大值对应的index
左node 就是 index 左边最大值 对应的index
右node 就是 index 右边最大值对应的 index
依次类推。
这样query 的话就是 logn了?  请楼主指正。  感谢楼主分享!!! 祝楼主拿到offer !!!
.鏈枃鍘熷垱鑷1point3acres璁哄潧
补充内容 (2016-10-12 13:16):
发现其实和这个题是一样的。。。。
http://www.lintcode.com/en/problem/segment-tree-query/
回复 支持 反对

使用道具 举报

33847682 发表于 2016-10-12 15:49:33 | 显示全部楼层
第一题中序+kmp应该可以做到o(m)吧 先中序遍历一遍s树 存成string 再遍历t树存成string 然后匹配 这样应该可以吧?
回复 支持 反对

使用道具 举报

33847682 发表于 2016-10-12 15:55:15 | 显示全部楼层
额 错了 忽略
回复 支持 反对

使用道具 举报

33847682 发表于 2016-10-12 16:09:48 | 显示全部楼层
第二题是LC上面的count smaller num after self的变种?
回复 支持 反对

使用道具 举报

XavierWangXY 发表于 2016-10-12 16:25:27 | 显示全部楼层
第一题是不是每个treenode记录treesize 先check size是否相等 等的话recursive check 两个subtree
回复 支持 反对

使用道具 举报

XavierWangXY 发表于 2016-10-12 16:26:54 | 显示全部楼层
第二题merge sort或者bst with rank
回复 支持 反对

使用道具 举报

 楼主| 燧日岚烟 发表于 2016-10-13 01:16:27 | 显示全部楼层
uuuu99199 发表于 2016-10-12 10:22
不是太理解呃,这个应该不影响worst case吧?
我以为是中序+KMP算法呢,但是感觉KMP有点复杂。。。. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
面 ...

这是和面试官交流后的答案。。  因为题目重点在于node是可重复的,worst case就是tree里所有的node里的值都一样。  加count的话, 可以先用O(m)时间给S所有点标记count,O(n)时间标记T。match的时候从root开始match count。这样S里每个点只扫一次, 所以时间是O(m)。 这样总时间复杂度是O(m+n)。  因为m>>n,所以可以认为是O(m)
回复 支持 反对

使用道具 举报

 楼主| 燧日岚烟 发表于 2016-10-13 01:17:08 | 显示全部楼层
ashun 发表于 2016-10-12 09:53
请问第四题b)直接遍历i~j之间的元素不行吗?我好像没太理解。。。。。

耗时太长了,题目里假设会多次重复调用b这个function
回复 支持 反对

使用道具 举报

 楼主| 燧日岚烟 发表于 2016-10-13 01:18:02 | 显示全部楼层
omega094 发表于 2016-10-12 13:01
最后一问我觉得应该是建立一个tree.1point3acres缃
然后root 就是 整个array 最大值对应的index. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
左node 就是 index 左边 ...

居然是原题 刷题少 不知道啊。。   面试官给的tips就是这种你链接里的解法
回复 支持 反对

使用道具 举报

 楼主| 燧日岚烟 发表于 2016-10-13 01:19:48 | 显示全部楼层
33847682 发表于 2016-10-12 16:09
第二题是LC上面的count smaller num after self的变种?
. Waral 鍗氬鏈夋洿澶氭枃绔,
不是吧, 这题面试官给的tips是merge sort
回复 支持 反对

使用道具 举报

 楼主| 燧日岚烟 发表于 2016-10-13 01:20:45 | 显示全部楼层
XavierWangXY 发表于 2016-10-12 16:25
第一题是不是每个treenode记录treesize 先check size是否相等 等的话recursive check 两个subtree
. more info on 1point3acres.com
差不多意思, 看我给其他人的回复吧
回复 支持 反对

使用道具 举报

33847682 发表于 2016-10-13 01:22:08 | 显示全部楼层
燧日岚烟 发表于 2016-10-13 01:19
不是吧, 这题面试官给的tips是merge sort

merge sort和bit都可以做啊
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-10 17:08

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表