一亩三分地论坛

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

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

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

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

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

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

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

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>. From 1point 3acres bbs
  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]                                   
                                       
                                . 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
                        . 1point 3acres 璁哄潧
               
                                                                                                                                                                                                [size=11.000000pt]                                   
                                       
                                . Waral 鍗氬鏈夋洿澶氭枃绔,
                       
               
                                                                                                                                                                                                [size=11.000000pt]                                   
                                       
                               
                       
-google 1point3acres               
                                                                                                                                                                                                [size=11.000000pt]                                   . 鍥磋鎴戜滑@1point 3 acres
                                       
                                . 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
                       
               
                                       
                               
                       
               


补充内容 (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.         }. from: 1point3acres.com/bbs

  8.         public static CNode insert(CNode node, int value) {
  9.                 CNode current = new CNode(value);
  10.                 if (node == null) return current; . 鍥磋鎴戜滑@1point 3 acres
  11.                 // node may not be smallest or largest
  12.                 // may have duplicate in circle
  13.                 CNode p = node;
  14.                 while (p.next.val >= p.val) {
  15.                         p = p.next;
  16.                         // in case that all node.val are equal or there is only one node in the circle
  17.                         if (p == node) {
  18.                                 CNode temp = p.next;.鐣欏璁哄潧-涓浜-涓夊垎鍦
  19.                                 p.next = current;. from: 1point3acres.com/bbs
  20.                                 current.next = temp;
  21.                                 return current;-google 1point3acres
  22.                         }
  23.                 }
  24.                 // now p.val is the largest value, p.next.val is the smallest value
  25.                 CNode lg = p;
  26.                 CNode sm = p.next;
  27.                 if (value <= sm.val || value >= lg.val) {
  28.                         lg.next = current;
  29.                         current.next = sm;
  30.                         return current;
  31.                 }
  32.                 p = sm;
  33.                 while (value >= p.next.val) {
  34.                         p = p.next;. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  35.                 }
  36.                 CNode temp = p.next;. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  37.                 p.next = current;
  38.                 current.next = temp;. 1point3acres.com/bbs
  39.                 return current;
  40.         }
复制代码


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

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-11 06:40

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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