给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
class Solution {
func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
var listNode1 = l1;
var listNode2 = l2;
//进位
var carry: Int = 0;
let result: ListNode = ListNode(0)
var currentNode = result
while listNode1 != nil || listNode2 != nil || carry > 0 {
let sum: Int = (listNode1?.val ?? 0) + (listNode2?.val ?? 0) + carry
currentNode.next = ListNode(sum % 10)
currentNode = currentNode.next!
listNode1 = listNode1?.next
listNode2 = listNode2?.next
carry = sum / 10
}
return result.next
}
}
- (ListNode *)addTwoNumber:(ListNode *)l1 listNode2:(ListNode *)l2 {
ListNode *result = [[ListNode alloc] initWithVal:0];
ListNode *currentNode = result;
ListNode *listNode1 = l1;
ListNode *listNode2 = l2;
//进位标记
NSInteger carry = 0;
while (listNode1 || listNode2 || carry > 0) {
NSInteger sum = listNode1.val + listNode2.val + carry;
currentNode.next = [[ListNode alloc] initWithVal:sum%10];
currentNode = currentNode.next;
listNode1 = listNode1.next;
listNode2 = listNode2.next;
carry = sum / 10;
}
return result.next;
}