9月底狗狗电面面经

9月25号面的狗家电面,应该是白人小哥一上来就开始做题。感谢地里面经中了第一道,恢复二叉树:即二叉树中多了一个edge,要求把这个edge找出来并且去掉。之前看的面经里这道题,面试官会给个follow up:现在树中多了不止一条edge,全部找出来并去掉。但是感觉无follow up的代码可以达到同样的效果?
第二题突然来了一道,面试官自己也说是“totally different" 的题…大意是在google的office中有一列desks。现在有三个长度为100的micro kitchen,判断摆放这三个kitchen能否serve(cover)到所有的desk,input为一个数组比如,arr : [20, 100, 140, 230, 280, 300], 每个position i有一个desk,arr[i]代表这个desk离左边墙的距离。

写第二题最后有点小bug,面试官提醒后改过来了。前天收到了onsite的通知,正如之前地里面经所说感觉狗家还是很注重testcase的,多和面试官一起run through几个典型的testcase,一是以防自己思路错误,二是让面试官也完全清楚思路,否则中间写代码他可能会打断你询问,双方都受影响。最后求一波米5555555!

请问第二题什么思路?

觉得最近的面试官很喜欢graph -bfs ,dfs

lz可以分享下第一题的思路吗? 我的想法是bfs, push左右子节点的时候检查一下是否在visited里,如果是说明之前已经访问过了,这条边就是多余的。 followup就是每次探测到多余的时候push到数组中,最后返回这个数组。

第二题是排好序的数列嘛?反正每一个桌子都要被cover,难道不就是从第一个开始算然后100以内的被cover,然后从下一个没有被cover到的开始算第二个table然后算完三个就行了?遍历一遍O(n)?