链接:https://leetcode-cn.com/problems/add-two-numbers/`
迭代即可,记录一下进位。
C++:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *head = new ListNode(0); //哨兵节点,用于返回答案
ListNode *curr = head;
int carry = 0; //进位
while(l1||l2)
{
int x = (l1)?l1->val:0;
int y = (l2)?l2->val:0;
int sum = carry+x+y;
carry = sum/10;
curr->next = new ListNode(sum%10);
curr =curr->next;
if(l1)
l1 = l1->next;
if(l2)
l2 = l2->next;
}
if(carry>0)
curr->next = new ListNode(1);
return head->next;
}
Python3:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
head = ListNode(0)
curr = head
carry = 0
while(l1 or l2):
x = l1.val if l1 else 0
y = l2.val if l2 else 0
sum = carry+x+y
carry = sum//10
curr.next = ListNode(sum%10)
curr = curr.next
if(l1):
l1 = l1.next
if(l2):
l2 = l2.next
if(carry>0):
curr.next = ListNode(1)
return head.next
本文提供了一种解决LeetCode上经典题目“两数相加”的算法思路,使用迭代方法并记录进位,提供了C++和Python3两种语言的实现代码。

256

被折叠的 条评论
为什么被折叠?



