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

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

全局:

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

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
最近在看OA2
看到有一个题目是insert value into a circle linked-list
                                                                                                                                                                                                [size=11.000000pt]因为找不到test case,所以对自己写的代码跑了自己的测试但不知道有没有h
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
         
                                       
                               
                       
               
                                       
                               
                       
               


补充内容 (2016-1-26 14:51):
代码没弄好!下面给了新的。

上一篇:Google Intern面经 1/26
下一篇:Pocket Gems一面
🔗
 楼主| citynart 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.         public static CNode insert(CNode node, int value) {
  9.                 CNode current = new CNode(value);
  10.                 if (node == null) return current;
  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;
  20.                                 current.next = temp;
  21.                                 return current;
  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;
  39.                 return current;
  40.         }
复制代码


代码没贴好!再来一次
回复

使用道具 举报

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

本版积分规则

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