[Linkedlist]2. Add Two Numbers

You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list.

You may assume the two numbers do not contain any leading zero, except the number 0 itself.

/**

* Definition for singly-linked list.

* public class ListNode {

*    int val;

*    ListNode next;

*    ListNode() {}

*    ListNode(int val) { this.val = val; }

*    ListNode(int val, ListNode next) { this.val = val; this.next = next; }

* }

*/

class Solution {

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {

        ListNode res = new ListNode(0);

        ListNode p = res;

        int carry = 0;

        while (l1 != null || l2 != null || carry != 0) {

            int l1val = l1 != null ? l1.val : 0;

            int l2val = l2 != null ? l2.val : 0;

            int sum = carry + l1val + l2val;

            int val = sum % 10;

            carry = sum / 10;

            ListNode next = new ListNode(val);

            p.next = next;

            p = next;


            if (l1 != null) {

                l1 = l1.next;

            }

            if (l2 != null) {

                l2 = l2.next;

            }

        }

        return res.next;

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容