数据结构算法 LinkList (Add Two Numbers)

Posted 仅供记录,日常灌水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构算法 LinkList (Add Two Numbers)相关的知识,希望对你有一定的参考价值。

两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。

Solution:建立一个新链表C,然后把输入的两个链表从头往后查,每两个相加,添加一个新节点到新链表C后面,

问题注意点1就是要进位问题。2. 最高位的进位问题要最后特殊处理 。

public ListNode addLists(ListNode l1, ListNode l2) {
         ListNode dummy = new ListNode(-1);
        ListNode cur = dummy;
        int carry = 0;
        while (l1 != null || l2 != null) {
            int d1 = l1 == null ? 0 : l1.val;
            int d2 = l2 == null ? 0 : l2.val;
            int sum = d1 + d2 + carry;
            carry = sum >= 10 ? 1 : 0;
            cur.next = new ListNode(sum % 10);
            cur = cur.next;
            if (l1 != null) l1 = l1.next;
            if (l2 != null) l2 = l2.next;
        }
        if (carry == 1) cur.next = new ListNode(1);
        return dummy.next;
    }

 

以上是关于数据结构算法 LinkList (Add Two Numbers)的主要内容,如果未能解决你的问题,请参考以下文章

[算法练习]Add Two Numbers

Leetcode:Add Two Numbers

Android 开发也要懂得数据结构 - LinkList源码

Java中的linklist都有哪些用法,list.add,list.getFirst(),这些是啥意思?

LeeCode(No2 - Add Two Numbers)

我的LC之路-2. Add Two Numbers