代码仓库:Github | Leetcode solutions @doubleZ0108 from Peking University.
- 解法1(T40.5% S18.2%): 非常经典的小学加法问题,只不过需要用链表来实现,同时遍历两个链表,对位相加(同时加上上一位的进位),将10以下的整数部分创建新的一个链表节点加入结果链表的next中,将10以上的部分作为进位保留。当该循环结束时意味着两链表中较短的那个已经处理完,接下来应该继续处理还剩下的那个较长的链表,可以直接写两边相似的while循环来处理。最后再把可能剩下的进位单独考虑一下即可。
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
result = ListNode()
head = result
bonus = 0
while l1 and l2:
fresh = ListNode()
head.next = fresh
head = fresh
fresh.val = (l1.val + l2.val + bonus) % 10
bonus = (l1.val + l2.val + bonus) // 10
l1 = l1.next
l2 = l2.next
while l1:
fresh = ListNode()
head.next = fresh
head = fresh
fresh.val = (l1.val + bonus) % 10
bonus = (l1.val + bonus) // 10
l1 = l1.next
while l2:
fresh = ListNode()
head.next = fresh
head = fresh
fresh.val = (l2.val + bonus) % 10
bonus = (l2.val + bonus) // 10
l2 = l2.next
if bonus != 0:
fresh = ListNode()
fresh.val = bonus
fresh.next = None
head.next = fresh
return result.next
这篇博客介绍了一个Python实现的解决方案,用于处理两个链表表示的数字相加问题。通过遍历两个链表,逐位相加并处理进位,最终形成新的链表表示结果。代码详细展示了如何处理不同长度链表的边界情况,并确保正确计算进位。
163

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



