[职场感言] 工作一年了,聊聊三件事

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
E轮2.5亿美元融资
K12教育独角兽一起作业
北京-诚聘人工智能/教育/大数据岗
坐标湾区
Games Startup
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
码农求职神器Triplebyte:
不用海投
内推多家公司面试
把贵司招聘信息放这里
查看: 2757|回复: 1
收起左侧

Amazon【OA2】Insert Value into Circle List (CNode)讨论

[复制链接] |试试Instant~ |关注本帖
gaocan1992 发表于 2016-1-27 06:48:33 | 显示全部楼层 |阅读模式

2016(1-3月) 码农类General 硕士 全职@Amazon - 内推 - 在线笔试  | Pass | fresh grad应届毕业生

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

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

x
最近在看OA2
看到有一个题目是insert value into a circle linked-list
                                                                                                                                                                                                [size=11.000000pt]因为找不到test case,所以对自己写的代码跑了自己的测试但不知道有没有hit到所有cases,请大家帮忙看一下
[size=11.000000pt]我自己想的是有可能有重复,而且给的node不一定是最小的
  1. <p>class InsertCircle {</p><p><span class="Apple-tab-span" style="white-space:pre">        </span>public static class CNode {</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>CNode next;</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>int val;</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>CNode(int val) {</p><p><span class="Apple-tab-span" style="white-space:pre">                        </span>this.val = val;</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>}</p><p><span class="Apple-tab-span" style="white-space:pre">        </span>}</p><p>. Waral 博客有更多文章,
  2. </p><p><span class="Apple-tab-span" style="white-space:pre">        </span>public static CNode insert(CNode node, int value) {</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>CNode current = new CNode(value);</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>if (node == null) return current; </p><p><span class="Apple-tab-span" style="white-space:pre">                </span>// node may not be smallest or largest</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>// may have duplicate in circle</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>CNode p = node;</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>while (p.next.val >= p.val) {</p><p><span class="Apple-tab-span" style="white-space:pre">                        </span>p = p.next;</p><p><span class="Apple-tab-span" style="white-space:pre">                        </span>// in case that all node.val are equal or there is only one node in the circle</p><p><span class="Apple-tab-span" style="white-space:pre">                        </span>if (p == node) {</p><p><span class="Apple-tab-span" style="white-space:pre">                                </span>CNode temp = p.next;</p><p><span class="Apple-tab-span" style="white-space:pre">                                </span>p.next = current;</p><p><span class="Apple-tab-span" style="white-space:pre">                                </span>current.next = temp;</p><p><span class="Apple-tab-span" style="white-space:pre">                                </span>return current;</p><p><span class="Apple-tab-span" style="white-space:pre">                        </span>}</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>}</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>// now p.val is the largest value, p.next.val is the smallest value</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>CNode lg = p;</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>CNode sm = p.next;</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>if (value <= sm.val || value >= lg.val) {</p><p><span class="Apple-tab-span" style="white-space:pre">                        </span>lg.next = current;</p><p><span class="Apple-tab-span" style="white-space:pre">                        </span>current.next = sm;</p><p><span class="Apple-tab-span" style="white-space:pre">                        </span>return current;</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>}</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>p = sm;</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>while (value >= p.next.val) {</p><p><span class="Apple-tab-span" style="white-space:pre">                        </span>p = p.next;</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>}</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>CNode temp = p.next;</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>p.next = current;</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>current.next = temp;</p><p><span class="Apple-tab-span" style="white-space:pre">                </span>return current;</p><p><span class="Apple-tab-span" style="white-space:pre">        </span>}</p><div>}</div>
复制代码
[size=11.000000pt]                                   
                                       
                               
                       
               
                                                                                                                                                                                                [size=11.000000pt]                                   
                                       
                               
                       
               
                                                                                                                                                                                                [size=11.000000pt]                                   
                                       
                               
                       
               
                                                                                                                                                                                                [size=11.000000pt]                                   
                                       
                               
                       
               
                                       
                                -google 1point3acres
                       
               


补充内容 (2016-1-26 14:51):
代码没弄好!下面给了新的。
 楼主| gaocan1992 发表于 2016-1-27 06:50:44 | 显示全部楼层
  1. public static class CNode {
  2.                 CNode next;
  3.                 int val;
  4.                 CNode(int val) {
  5.                         this.val = val;
  6.                 }
  7.         }

  8. . more info on 1point3acres
  9.         public static CNode insert(CNode node, int value) {
  10.                 CNode current = new CNode(value);
  11.                 if (node == null) return current; . From 1point 3acres bbs
  12.                 // node may not be smallest or largest
  13.                 // may have duplicate in circle
  14.                 CNode p = node;. from: 1point3acres
  15.                 while (p.next.val >= p.val) { 来源一亩.三分地论坛.
  16.                         p = p.next;
  17.                         // in case that all node.val are equal or there is only one node in the circle
  18.                         if (p == node) {
  19.                                 CNode temp = p.next;. 牛人云集,一亩三分地
  20.                                 p.next = current;
  21.                                 current.next = temp;
  22.                                 return current;. 一亩-三分-地,独家发布
  23.                         }
  24.                 }
  25.                 // now p.val is the largest value, p.next.val is the smallest value
  26.                 CNode lg = p;
  27.                 CNode sm = p.next;
  28.                 if (value <= sm.val || value >= lg.val) {. 1point 3acres 论坛
  29.                         lg.next = current;
  30.                         current.next = sm;
  31.                         return current;.1point3acres网
  32.                 }
  33.                 p = sm;
  34.                 while (value >= p.next.val) {
  35.                         p = p.next;
  36.                 }
    . 1point3acres
  37.                 CNode temp = p.next;
  38.                 p.next = current;
  39.                 current.next = temp;. visit 1point3acres for more.
  40.                 return current;. 1point3acres
  41.         }
复制代码


代码没贴好!再来一次
回复 支持 反对

使用道具 举报

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

关闭

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

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2018-5-24 14:09

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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