class ListNode: def __init__(self, x): self.val = x self.next = None class Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: """创建一个空链表,p、q指向头节点,q用来最后返回,p用来遍历""" p = q = ListNode(0) val = 0 while 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.next l1 = l1.next if l1 else None l2 = l2.next if l2 else None return q.next """创建链表""" def generateList(l: list) -> ListNode: p = q = ListNode(0) for val in l: p.next = ListNode(val) p = p.next return q.next """输出链表""" def printList(l: ListNode): while l: print("%d, " % (l.val), end='') #end = ''表示结尾加空格不换行 l = l.next print('') if __name__ == "__main__": l1 = generateList([2, 4, 3]) l2 = generateList([5, 6, 4]) printList(l1) printList(l2) s = Solution() printList(s.addTwoNumbers(l1, l2))
Python创建两链表并相加;leetcode两数求和
猜你喜欢
转载自blog.csdn.net/qq_39429779/article/details/108952403
今日推荐
周排行