给定两个用链表表示的整数,每个节点包含一个数位。
这些数位是反向存放的,也就是个位排在链表首部。
编写函数对这两个整数求和,并用链表形式返回结果。
示例:
输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295 输出:2 -> 1 -> 9,即912
进阶:假设这些数位是正向存放的,请再做一遍。
示例:
输入:(6 -> 1 -> 7) + (2 -> 9 -> 5),即617 + 295 输出:9 -> 1 -> 2,即912
**难度**: Medium
**标签**: 链表、 数学、
# -*- coding: utf-8 -*-
# @Author : LG
"""
执行用时:76 ms, 在所有 Python3 提交中击败了61.41% 的用户
内存消耗:13.8 MB, 在所有 Python3 提交中击败了100.00% 的用户
解题思路:
使用双指针分别遍历两个链表,使用一个数记录进位。
若双指针与进位均空时,结束。
"""
# 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:
p, q = l1, l2
head = o = ListNode(0)
add = 0
while (p or q or add):
if p:
add = p.val + add
p = p.next
if q:
add = q.val + add
q = q.next
o.next = ListNode((add % 10))
o = o.next
add = add // 10
return head.next