题目
分析
题目比较简单,从前往后依次遍历求和即可。
C++题解
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution
{
public:
ListNode *addTwoNumbers(ListNode *l1, ListNode *l2)
{
struct ListNode *p = new struct ListNode((l1->val+l2->val)%10);
int j=(l1->val+l2->val)/10;
struct ListNode *temp = p;
struct ListNode null(0);
while(l1->next || l2->next)
{
l1->next ? l1=l1->next : l1=&null;
l2->next ? l2=l2->next : l2=&null;
struct ListNode * x =new struct ListNode((l1->val+l2->val+j)%10);
j=(l1->val+l2->val+j)/10;
temp->next = x;
temp = x;
}
if(j!=0)
{
struct ListNode * x =new struct ListNode(j);
temp->next = x;
}
return p;
}
};
Java题解
public class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode p = new ListNode((l1.val+l2.val)%10);
int j=(l1.val+l2.val)/10;
ListNode temp = p;
while(l1.next !=null || l2.next!=null){
if(l1.next !=null) {
l1=l1.next;
}else
l1=new ListNode(0);
if(l2.next !=null) {
l2=l2.next;
}else
l2=new ListNode(0);
ListNode x =new ListNode((l1.val+l2.val+j)%10);
j=(l1.val+l2.val+j)/10;
temp.next = x;
temp = x;
}
if(j!=0){
ListNode x =new ListNode(j);
temp.next = x;
}
return p;
}
}