当前位置: 代码迷 >> 综合 >> Python创建两链表并相加;leetcode两数求和
  详细解决方案

Python创建两链表并相加;leetcode两数求和

热度:40   发布时间:2024-02-25 17:07:05.0
class ListNode:def __init__(self, x):self.val = xself.next = Noneclass Solution:def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:"""创建一个空链表,p、q指向头节点,q用来最后返回,p用来遍历"""p = q = ListNode(0)val = 0while val or l1 or l2:val, cur = divmod(val + (l1.val if l1 else 0) + (l2.val if l2 else 0), 10)"""等效于sum 存储两节点数值 以及 进位标志位 三者相加的结果sum = val + (l1.val if l1 else 0) + (l2.val if l2 else 0)cur = sum % 10    #取余val = sum // 10   #取整"""#创建新链表p.next = ListNode(cur)p = p.nextl1 = l1.next if l1 else Nonel2 = l2.next if l2 else Nonereturn q.next"""创建链表"""
def generateList(l: list) -> ListNode:p = q = ListNode(0)for val in l:p.next = ListNode(val)p = p.nextreturn q.next"""输出链表"""
def printList(l: ListNode):while l:print("%d, " % (l.val), end='') #end = ''表示结尾加空格不换行l = l.nextprint('')if __name__ == "__main__":l1 = generateList([2, 4, 3])l2 = generateList([5, 6, 4])printList(l1)printList(l2)s = Solution()printList(s.addTwoNumbers(l1, l2))
  相关解决方案