欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LeetCode2 两数相加

程序员文章站 2022-04-04 09:03:14
...

连接

LeetCode2 两数相加

·亚节点
两个节点指向两条链表,遍历即可

  //对于链表问题,返回结果为头节点时,
    //通常需要先初始化一个预先指针pre,该指针的下一个节点指针指向真正的头结点head,
    //使用预先指针的目的在于链表初始化时无可用节点值,而且链表构造过程需要指针移动,进而导致头指针丢失
    //无法返回结果
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        //定义哑节点
        ListNode pre = new ListNode(0);
        //当前cur指针返回压接地那
        ListNode cur = pre;
        //进位
        int carry = 0;
        //当任意一个链表没有遍历完
        while(l1 != null || l2 != null) {
            //当某个链表为空时则让其为0
            int x = l1 == null ? 0 : l1.val;
            int y = l2 == null ? 0 : l2.val;

            //求和
            int sum = x + y + carry;

            //求进位
            carry = sum / 10;
            //求在这个为上的进位
            sum = sum % 10;
            //更新cur
            cur.next = new ListNode(sum);
            cur = cur.next;


            if(l1 != null)
                l1 = l1.next;
            if(l2 != null)
                l2 = l2.next;

        }
        //如果链表全部遍历完毕,进位值为1,则在新链表最前方添加节点
        if(carry == 1) {
            cur.next = new ListNode(carry);
        }
        return pre.next;
    }


相关标签: leetcode刷题笔记