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 contain a single digit. Add the two numbers and return it as a linked list.
You may assume the two numbers do not contain any leading zero, except the number 0 itself.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
主要考察的是两个链表的相加问题,注意点为两个:
1,链表的构造
2,进位问题
解决这两个问题,本题不难解决
//链表的构造
package addtwonumbers;
public class listNode {
int val;
listNode next;
public listNode(int x) {
// TODO Auto-generated constructor stub
x=val;
}
}
package addtwonumbers;
public class Solution {
public listNode addTwobers(listNode l1,listNode l2) {
int carry=0;
listNode newHead=new listNode(0);
listNode p1=l1,p2=l2,p3=newHead;
while(p1!=null||p2!=null)
{
if(p1!=null){
carry+=p1.val;
p1=p1.next;
}
if(p2!=null){
carry+=p2.val;
p2=p2.next;
}
p3.next=new listNode(carry%10);
p3=p3.next;
carry/=10;
}
if(carry==1)
p3.next=new listNode(carry);
return newHead.next;
}
}