Python
int支持大数,直接构造int,相加,分解int
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
def NodeListSum(l):
t = 1
num = 0
while l != None:
num += t * l.val
t *= 10
l = l.next
return num
s = NodeListSum(l1) + NodeListSum(l2)
res = ListNode(s % 10)
s /= 10
p = res;
while s != 0:
temp = ListNode(s % 10)
temp.next = None
p.next = temp
p = temp
s /= 10
return res
C++
int 正负21亿,链表大数加法
/**
* 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)
{
ListNode *head = new ListNode(0);
ListNode *p = head;
int t = 0, sum, s;
ListNode *L1 = l1, *L2 = l2;
while (L1 != NULL || L2 != NULL)
{
int num1 = 0, num2 = 0;
if (L1 != NULL)
{
num1 = L1->val;
L1 = L1->next;
}
if (L2 != NULL)
{
num2 = L2->val;
L2 = L2->next;
}
sum = num1 + num2 + t;
s = sum % 10;
t = sum / 10;
ListNode *temp = new ListNode(s);
p->next = temp;
p = temp;
}
while (t)
{
ListNode *temp = new ListNode(t % 10);
t /= 10;
p->next = temp;
p = temp;
}
return head->next;
}
};