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
参考:http://www.2cto.com/kf/201310/252996.html
my answer:
public class Solution {
public static class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode ret = new ListNode(0);
ListNode p1 = l1, p2 = l2, p3 = ret;
int carry = 0;
while(p1 != null || p2 != null){
if(p1 != null){
carry += p1.val;
p1 = p1.next;
}
if(p2 != null){
carry += p2.val;
p2 = p2.next;
}
ListNode n = new ListNode(carry%10);
p3.next = n;
p3 = n;
carry /= 10;
if(carry == 1){
p3.next = new ListNode(1);
}
}
return ret.next;
}
public static void main(String[] args) {
ListNode l1 = new ListNode(2);
ListNode x2 = new ListNode(4);
ListNode x3 = new ListNode(3);
l1.next = x2;
x2.next = x3;
ListNode l2 = new ListNode(5);
ListNode y2 = new ListNode(6);
ListNode y3 = new ListNode(4);
l2.next = y2;
y2.next = y3;
ListNode ret = addTwoNumbers(l1, l2);
while(ret !=null){
System.out.print(ret.val);
ret = ret.next;
}
}
}
ps,补充说明,自己运行cmd javac 编译无错 运行正常,但是放网上报错,不知道哪里的问题...