📣 独立日限时特惠: VIP通行证立减$68
查看: 2278| 回复: 3
跳转到指定楼层
上一主题 下一主题
收起左侧

[Leetcode] Run Time Error in Add Two Numbers(Only in new oj)?

全局:

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

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

x
在新的online Judge 下提交出现的错误,old oj pass了。研究了好久没发现问题,当然现在已经知道我的code不是最优的,但是哪位能帮忙指出错在哪?谢谢了(Last executed input:        {0}, {0}


/**
* Definition for singly-linked list.
* public class ListNode {
*     int val;
*     ListNode next;
*     ListNode(int x) {
*         val = x;
*         next = null;
*     }
* }
*/
public class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        // Start typing your Java solution below
        // DO NOT write main() function
        
        
        ListNode l3=new ListNode(0); //= new ListNode(0);
        ListNode root_node=l3;
        ListNode sec_last=l3;
        int rem = 0;
        
        while(l1!=null||l2!=null || rem!=0)
        {
            l3.val+=rem;
            
            if(l1!=null)
            {
                l3.val+=l1.val;
                l1=l1.next;            
            }
            if(l2!=null)
            {
                l3.val+=l2.val;
                l2=l2.next;
            }
            rem=l3.val/10;
            l3.val = l3.val%10;
            
            sec_last = l3;
            sec_last.next=new ListNode(0);
            l3=sec_last.next;
            
        }
        
           sec_last.next = null;
        
        return root_node;
        
    }
}

上一篇:Amazon online assessment问题
下一篇:求解:字符串解析
🔗
zt7584 2013-9-16 20:41:26 | 只看该作者
全局:
小弟刚捡起java的基础不久哈。。原来主要是C++。。。
  1. sec_last = l3;
  2.             sec_last.next=new ListNode(0);
  3.             l3=sec_last.next;
复制代码
这部分代码感觉有可能是隐患哈。楼主这个新new出来的ListNode的next这个field并没有赋值成null。而且小弟觉得这个sec_last并没有必要,可以改成:
  1. l3.next=new ListNode(0);
  2.             l3 = l3.next;
  3.             l3.next = null;
复制代码
大家互相讨论互相学习哈,如果不对的,还请赐教。
回复

使用道具 举报

🔗
 楼主| wallacetju 2013-9-17 09:10:27 | 只看该作者
全局:
zt7584 发表于 2013-9-16 20:41
小弟刚捡起java的基础不久哈。。原来主要是C++。。。这部分代码感觉有可能是隐患哈。楼主这个新new出来的Li ...

不要这么客气,大家都是来互想学习的,谢谢你的回复。
“新new出来的ListNode的next这个field并没有赋值成null”:
可能在帖子中没有表达清楚,如果你看Commets的话,你会发现constructor里面已经有
*     ListNode(int x) {
*         val = x;
*         next = null;
*     }
关于 “sec_last”: 其实就是second last element 了。
如果你仔细看while循环,当运算完最后一个element的时候,l3.next=new ListNode(0);其实会生成一个多余的node。比如 {1,2}和{2,3}相加,会生成{3,5,0}。
我的最后一步,sec_last.next = null; 就是为了把那个“0”给去掉。

在看了别人的代码之后觉得这个方法有点ulgy,不过就是想弄明白这样做为何错了。
Thanks,

回复

使用道具 举报

🔗
zt7584 2013-9-17 09:26:45 | 只看该作者
全局:
wallacetju 发表于 2013-9-16 20:10
不要这么客气,大家都是来互想学习的,谢谢你的回复。
“新new出来的ListNode的next这个field并没有赋值 ...

哦哦,明白了,没留意到comment里constructor给赋值了。。。囧

原来second last element是这个意思啊,没理解到这个深意哈。学习了!

楼主认为有没有可能是运行太多个测试数据,new了太多node,服务器系统内存跑空了,出了runtime error。。。
回复

使用道具 举报

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

本版积分规则

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