楼主: Roisterer
跳转到指定楼层
上一主题 下一主题
收起左侧

Google 11/30 onsite 面经

🔗
freemail165 2016-12-19 10:43:35 | 只看该作者
全局:
第一题是不是这样

public List<Node> remove(Node root) {
   List<Node> result=new ArrayList<>();
   helper(null,root,result);
   return result;
}

public void helper(Node parent,Node cur,List<Node> result) {
     if(cur==null) return;
     if(shouldRemove(cur)) {
             if(parent!=null) {
                      if(parent.left==cur) parent.left=null;
                      else parent.right=null;
             }
             helper(null,cur.left,result);
             helper(null,cur.right,result);
    } else {
             if(parent==null) result.add(cur);
             helper(cur,cur.left,result);
             helper(cur,cur.right,result);   
    }
}

补充内容 (2016-12-19 10:44):
不好意思,应该是第二题
回复

使用道具 举报

🔗
aangel 2016-12-19 11:21:40 | 只看该作者
全局:
freemail165 发表于 2016-12-19 10:43
第一题是不是这样

public List remove(Node root) {

基本上是这样吧,有个小bug

当shouldRemove(cur) return false的情况

result.add(cur) 是必须项,不需要判断parent是否为null吧
回复

使用道具 举报

🔗
aangel 2016-12-19 11:24:36 | 只看该作者
全局:
freemail165 发表于 2016-12-19 10:43
第一题是不是这样

public List remove(Node root) {

还有shouldRemove(cur) return true的case

里面应该是helper(cur,cur.left,result);
helper(cur,cur.right,result);
回复

使用道具 举报

🔗
freemail165 2016-12-19 11:28:01 | 只看该作者
全局:
aangel 发表于 2016-12-19 11:21
基本上是这样吧,有个小bug

当shouldRemove(cur) return false的情况

你跟你的父节点连在一起,为什么要放到结果里
只有分开了才需要吧
回复

使用道具 举报

🔗
freemail165 2016-12-19 11:29:29 | 只看该作者
全局:
aangel 发表于 2016-12-19 11:24
还有shouldRemove(cur) return true的case

里面应该是helper(cur,cur.left,result);

你自己好好考虑吧。

不是都remove了吗,还要父节点信息做什么?
对于cur.left, cur.right 他们的父节点已经是空了
回复

使用道具 举报

🔗
aangel 2016-12-19 11:40:59 | 只看该作者
全局:
freemail165 发表于 2016-12-19 11:28
你跟你的父节点连在一起,为什么要放到结果里
只有分开了才需要吧

如果shouldRemove(cur)返回false,那就表明当前节点不该被删除,要加到result的list里面
回复

使用道具 举报

🔗
aangel 2016-12-19 12:33:11 | 只看该作者
全局:
freemail165 发表于 2016-12-19 11:29
你自己好好考虑吧。

不是都remove了吗,还要父节点信息做什么?

我又看了一下题目,如果只是返回子树的根节点那这个写法就是对的
回复

使用道具 举报

🔗
freemail165 2016-12-19 13:43:51 | 只看该作者
全局:
aangel 发表于 2016-12-19 12:33
我又看了一下题目,如果只是返回子树的根节点那这个写法就是对的

list是删除所有节点后原来的树分裂成的子树的集合。

根据这个描述,你觉得应该存什么呢?
只能是那些分裂后的root吧
回复

使用道具 举报

🔗
GoodToGo 2016-12-28 08:17:21 | 只看该作者
全局:
楼主好,round 4 “然后再给你一个词,问你这一轮用这个词去猜测,是不是无用功,就是有没有必要用这个词去猜测”,啥叫再给我一个词?难道说前n-1次player1心里所想是一个词,第n次心里所想换了一个?
回复

使用道具 举报

🔗
 楼主| Roisterer 2016-12-29 02:09:34 | 只看该作者
全局:
niulongjia 发表于 2016-12-28 08:17
楼主好,round 4 “然后再给你一个词,问你这一轮用这个词去猜测,是不是无用功,就是有没有必要用这个词去 ...

不是,这个词就是你再猜的一个词
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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