首页 > 代码库 > LeetCode: Add Two Numbers

LeetCode: Add Two Numbers

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

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8

Solution:

/** * 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) {        return addTwoNumbers(l1,l2,0);    }    private ListNode addTwoNumbers(ListNode l1, ListNode l2, int a){        if(l1 == null && a == 0) {            return l2;        }        else  if(l2 == null && a == 0) return l1;        else {            int y;            int p = ((l1 == null) ? 0 : l1.val);            int q = ((l2 == null) ? 0 : l2.val);            int temp = (p + q + a)%10;            y = (p + q + a)/10;            ListNode resListNode = new ListNode(temp);            resListNode.next = addTwoNumbers(l1==null? null: l1.next,l2==null? null:l2.next ,y);            return resListNode;        }    }}