Add Two Numbers

来源:互联网 发布:mysql 安卓 编辑:程序博客网 时间:2024/06/08 05:32

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

 

代码:

class ListNode {int val;    ListNode next;    ListNode(int x)     {    val = x;    next = null;    }}public class Solution_4{public static void print(ListNode l){ListNode q = l;while(q != null){System.out.print(q.val + " ");q = q.next;}System.out.println();}public static ListNode createNumber(int n){ListNode l = null, s, r;if(n != 0){int value = n % 10;l = new ListNode(value);r = l;n = n / 10;while(n != 0){value = n % 10;s = new ListNode(value);r.next = s;r = s;n = n / 10;}}return l;}public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {int tmp = 0;ListNode p = l1, q = l2, l = null, r;if(p != null && q != null){int value = (p.val + q.val + tmp) % 10;tmp = (p.val + q.val + tmp) / 10;l = new ListNode(value);r = l;p = p.next;q = q.next;while(p!= null && q!=null){ListNode s;value = (p.val + q.val + tmp) % 10;tmp = (p.val + q.val + tmp) / 10;s = new ListNode(value);r.next = s;r = s;p = p.next;q = q.next;}while(p!=null){ListNode s;value = (p.val + tmp) % 10;tmp = (p.val + tmp) / 10;s = new ListNode(value);r.next = s;r = s;p = p.next;}while(q!=null){ListNode s;value = (q.val + tmp) % 10;tmp = (q.val + tmp) / 10;s = new ListNode(value);r.next = s;r = s;q = q.next;}if(tmp != 0){ListNode s;s = new ListNode(tmp);r.next = s;r = s;}}return l;    }public static void main(String[] args){// TODO Auto-generated method stubListNode l1 = createNumber(50);ListNode l2 = createNumber(50);ListNode l = addTwoNumbers(l1, l2);print(l);}}


 

0 0