首页 > 其他 > 详细

LeetCode 题解 - 链表 - _002_AddTwoNumbers

时间:2019-12-06 15:50:12      阅读:85      评论:0      收藏:0      [点我收藏+]

_002_AddTwoNumbers

要点

先判断传入节点是否有一个为空,有的话直接返回另一个节点。

在传入节点都非空情况下,定义一个哑节点,可以有效防止下一个节点为 null,可以先创建好节点,再将指针移动,如此处:

cur.next = new ListNode(sum % 10);
cur = cur.next;

需要注意使用自定义指针来代替移动传入的指针,这样就不破坏原来传入的结构了。最终还要注意判断是否 sum == 1

public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
    if (l1 == null) return l2;
    if (l2 == null) return l1;
    
    int sum = 0;
    ListNode dummy = new ListNode(0); //定义一个节点,值为0

    ListNode p1 = l1;
    ListNode p2 = l2;
    ListNode cur = dummy;

    while (p1 != null || p2 != null) {
        if (p1 != null) {
            sum += p1.val;
            p1 = p1.next;
        }
        if (p2 != null) {
            sum += p2.val;
            p2 = p2.next;
        }
        cur.next = new ListNode(sum % 10);
        sum /= 10;
        cur = cur.next;
    }
    if (sum == 1) {
        cur.next = new ListNode(1);
    }
    return dummy.next;
}

LeetCode 题解 - 链表 - _002_AddTwoNumbers

原文:https://www.cnblogs.com/chenxianbin/p/11995617.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!