谈谈使用过的几款咖啡机

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
H1B/绿卡遥遥无期
又不想回国
来东南亚最大的互联网集团工作?
码农求职神器Triplebyte:
不用海投
内推多家公司面试
坐标湾区
Games Startup
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
查看: 4769|回复: 35
收起左侧

请帮忙分析一下OA2 insert into circular linked list这题

[复制链接] |试试Instant~ |关注本帖
我的人缘0
甯甯 发表于 2015-11-9 06:12:07 | 显示全部楼层 |阅读模式
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】

2015(10-12月) 码农类General 硕士 全职@Amazon - 网上海投 - 在线笔试  | Pass | fresh grad应届毕业生

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

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

x



补充内容 (2015-11-9 06:12):. From 1point 3acres bbs
手残点了回车

上一篇:Zillow summer2016 intern OA和第一轮电话面经
下一篇:amazon debug 题目:0,1,1,2,3,7 答案为
我的人缘0
 楼主| 甯甯 发表于 2015-11-9 06:16:21 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
前一阵做了OA2的Insert into a circular linked list。但是有两个test case没过。我应该考虑过了duplicate和null list的情况。代码大概如下。希望大家帮忙看看bug在哪儿。我也是眼拙看了一下午也没看出来==

        public static CNode insertSortedList(CNode start, int n). 牛人云集,一亩三分地
        {. Waral 博客有更多文章,
                // linked list is empty
                if (start == null) {
                    start = new CNode();
                    start.value = n;
                    start.next = start;
                    return start;
                }
                CNode cur = start;
                CNode head; CNode tail;  // head and tail node
                while (cur.next != start && cur.next.value >= cur.value) {
                        cur = cur.next;
                }.本文原创自1point3acres论坛
                tail = cur;             // find tail.本文原创自1point3acres论坛
                head = tail.next;   // find head
                if (head.value >= n || tail.value <= n) { // insert at either end
                        CNode newNode = new CNode();
                        newNode.value = n;
                        newNode.next = head;
                        tail.next = newNode;
                        return newNode;
                }
                cur = head;
                while (cur != tail && cur.next.value < n) { // find spot
                        cur = cur.next;. From 1point 3acres bbs
                }
                CNode newNode = new CNode();
                newNode.value = n;
                newNode.next = cur.next;
                cur.next = newNode;. visit 1point3acres for more.
                return newNode;
        }
回复 支持 反对

使用道具 举报

我的人缘0
aiuou 发表于 2015-11-9 07:40:21 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
如果new node 的值比当前list里的所有值都小,好像会出问题
回复 支持 反对

使用道具 举报

我的人缘0
 楼主| 甯甯 发表于 2015-11-10 01:46:47 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
aiuou 发表于 2015-11-9 07:40
如果new node 的值比当前list里的所有值都小,好像会出问题

if (head.value >= n || tail.value <= n) { // insert at either end
这里是说如果新值比head(最小值)小的话就加在head和tail中间。不知道您说的是这里嘛?
谢谢
回复 支持 反对

使用道具 举报

我的人缘0
CSBrogrammer 发表于 2015-11-10 01:54:16 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
甯甯 发表于 2015-11-10 01:46. Waral 博客有更多文章,
if (head.value >= n || tail.value

那里似乎是没问题的,我一时也看不出问题在哪里,回头帮lz run下unit test看看。如果lz那儿有什么好的test cases也可以告诉我哈
回复 支持 反对

使用道具 举报

我的人缘0
 楼主| 甯甯 发表于 2015-11-10 02:00:34 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
CSBrogrammer 发表于 2015-11-10 01:54
那里似乎是没问题的,我一时也看不出问题在哪里,回头帮lz run下unit test看看。如果lz那儿有什么好的tes ...

好的。多谢
回复 支持 反对

使用道具 举报

我的人缘0
CSBrogrammer 发表于 2015-11-10 03:42:52 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
甯甯 发表于 2015-11-10 02:00. 一亩-三分-地,独家发布
好的。多谢
.本文原创自1point3acres论坛
lz我想问下,如果list里有equal elements的话新的element是应该放在相同elements的最前端还是最后端?因为newnode is returned所以我想amazon应该是用returned的newnode来做unit test (otherwise it doesn't make sense to return such a listnode and it will make testing much harder right?), 所以这时候在有相同elements情况下where to put the new node就会对test有影响了...因此挺好奇这种情况该怎么放?你还记得题目怎么问的不?
回复 支持 反对

使用道具 举报

我的人缘0
 楼主| 甯甯 发表于 2015-11-10 04:44:13 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
CSBrogrammer 发表于 2015-11-10 03:42
lz我想问下,如果list里有equal elements的话新的element是应该放在相同elements的最前端还是最后端?因 ...
. visit 1point3acres for more.
That's a good point though. 我的代码是这样的,遇到duplicate的时候,如果duplicate刚好也是最大值,那放在最后。其他情况会放在相同node的最前面。I wonder if that's the cause of the problem. 我不记得题目或者地里有人专门强调过这个顺序的问题。
Mobile Apps Category (English)728x90
回复 支持 反对

使用道具 举报

我的人缘0
CSBrogrammer 发表于 2015-11-10 08:40:38 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
甯甯 发表于 2015-11-10 04:44
That's a good point though. 我的代码是这样的,遇到duplicate的时候,如果duplicate刚好也是最大值,那 ...

嗯好的,谢谢
回复 支持 反对

使用道具 举报

我的人缘0
CSBrogrammer 发表于 2015-11-10 09:08:42 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
lz其实newnode加在哪儿并不重要,重要的是when traversing from the newnode the output sequence should always be the same...所以insert at the beginning or the end doesn't matter, as long as it is consistent...我写了个小unit test应该covers所有cases了,你需要的话我可以发你邮箱
回复 支持 反对

使用道具 举报

我的人缘0
 楼主| 甯甯 发表于 2015-11-10 09:49:17 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
CSBrogrammer 发表于 2015-11-10 09:08
lz其实newnode加在哪儿并不重要,重要的是when traversing from the newnode the output sequence should a ...

请发到lininglovebayern@gmail.com。十分感谢。
回复 支持 反对

使用道具 举报

我的人缘0
aquapumpkin 发表于 2015-11-11 08:54:37 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
请问楼主最后知道是是什么原因导致test case有两个没过吗?谢谢楼主
回复 支持 反对

使用道具 举报

我的人缘0
 楼主| 甯甯 发表于 2015-11-11 08:57:34 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
aquapumpkin 发表于 2015-11-11 08:54. Waral 博客有更多文章,
请问楼主最后知道是是什么原因导致test case有两个没过吗?谢谢楼主

并不知道。还没想出来呐(=@__@=)
回复 支持 反对

使用道具 举报

我的人缘0
gsm107 发表于 2015-11-11 09:05:40 | 显示全部楼层
  此人我要顶:
 
100% (2) 【我投】
  此人我要踩:
 
0% (0) 【我投】
我记得我当时是第一个loop找head(最小值),然后第二次loop插入target,test case都过了

补充内容 (2015-11-11 09:06):
        public static CNode insertInCycle(CNode head, CNode target) {
                CNode slow = head;
                CNode fast = head.next;
                while (fast.val >= slow.val) {
                        slow = slow.next;
                        fast = fast.next;
. 牛人云集,一亩三分地                }

                CNode...
回复 支持 反对

使用道具 举报

我的人缘0
gsm107 发表于 2015-11-11 09:06:30 | 显示全部楼层
  此人我要顶:
 
100% (2) 【我投】
  此人我要踩:
 
0% (0) 【我投】
        public static CNode insertInCycle(CNode head, CNode target) {
                CNode slow = head;
                CNode fast = head.next;
                while (fast.val >= slow.val) {
                        slow = slow.next;
                        fast = fast.next;-google 1point3acres
                }

                CNode min = fast;
.留学论坛-一亩-三分地
                CNode left = min;. more info on 1point3acres
                CNode right = min.next;
                while (left.val <= right.val) {.留学论坛-一亩-三分地
                        if (target.val >= left.val && target.val <= right.val)
                                break;
                        left = left.next;
. From 1point 3acres bbs                        right = right.next;
                }
                left.next = target;
                target.next = right;
                return min;
        }
回复 支持 反对

使用道具 举报

我的人缘0
 楼主| 甯甯 发表于 2015-11-11 09:25:49 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
gsm107 发表于 2015-11-11 09:06. visit 1point3acres for more.
public static CNode insertInCycle(CNode head, CNode target) {. 围观我们@1point 3 acres
                CNode slow = head;
                CNode fast = ...

你好,
while (fast.val >= slow.val) {
        slow = slow.next;
        fast = fast.next;
}. 一亩-三分-地,独家发布
如果这个list只有一个node那么head.next就是head.
请问这里不会infinte loop下去么?
回复 支持 反对

使用道具 举报

我的人缘0
gsm107 发表于 2015-11-11 09:39:26 | 显示全部楼层
  此人我要顶:
 
100% (2) 【我投】
  此人我要踩:
 
0% (0) 【我投】
甯甯 发表于 2015-11-11 09:25
你好,
while (fast.val >= slow.val) {
        slow = slow.next;

会的,因为这是我做oa2之前写的,做oa2的时候调了一下但是事后具体改哪儿了实在是不记得了,只是给个参考
回复 支持 反对

使用道具 举报

我的人缘0
CSBrogrammer 发表于 2015-11-11 09:41:31 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
gsm107 发表于 2015-11-11 09:39
会的,因为这是我做oa2之前写的,做oa2的时候调了一下但是事后具体改哪儿了实在是不记得了,只是给个参考
. 留学申请论坛-一亩三分地
while(fast.val >= slow.val && fast != head)这样应该就好了
回复 支持 反对

使用道具 举报

我的人缘0
 楼主| 甯甯 发表于 2015-11-11 09:51:27 | 显示全部楼层
  此人我要顶:
 
0% (暂未有人投票) 【我投】
  此人我要踩:
 
0% (暂未有人投票) 【我投】
gsm107 发表于 2015-11-11 09:39
会的,因为这是我做oa2之前写的,做oa2的时候调了一下但是事后具体改哪儿了实在是不记得了,只是给个参考

好,谢谢。
回复 支持 反对

使用道具 举报

我的人缘0
gsm107 发表于 2015-11-11 09:57:44 | 显示全部楼层
  此人我要顶:
 
100% (2) 【我投】
  此人我要踩:
 
0% (0) 【我投】
CSBrogrammer 发表于 2015-11-11 09:41
while(fast.val >= slow.val && fast != head)这样应该就好了

对的,第二个while也加上这个条件,应该就没问题了
回复 支持 反对

使用道具 举报

游客
请先登录

本版积分规则

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

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

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

custom counter

GMT+8, 2018-6-23 12:30

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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