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.
Example:
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
Explanation: 342 + 465 = 807.
- 注意标志位
- 注意每次相加都要调整标志位为0或者1
- 注意链表遍历完毕后如果标志位为1需要增加一个结点。
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
p1 = l1
p2 = l2
preHead = ListNode(-1)
p3 = preHead
flag = 0
while p1 and p2:
result = p1.val+p2.val+flag
if result >=10:
result %=10
flag =1
else:
flag = 0
newNode = ListNode(result)
p3.next = newNode
p3 = p3.next
p1 = p1.next
p2 = p2.next
if p1:
while p1:
result = p1.val+flag
if result >= 10:
result %= 10
flag =1
else:
flag =0
newNode = ListNode(result)
p3.next = newNode
p3 = p3.next
p1 = p1.next
if p2:
while p2:
result = p2.val+flag
if result >= 10:
result %= 10
flag =1
else:
flag = 0
newNode = ListNode(result)
p3.next = newNode
p3 = p3.next
p2 = p2.next
if flag ==1:
newNode = ListNode(1)
p3.next = newNode
return preHead.next
result
Runtime: 72 ms, faster than 91.85% of Python3 online submissions for Add Two Numbers.
Memory Usage: 13.9 MB, less than 5.67% of Python3 online submissions for Add Two Numbers.