[leetcode 10-06] 四、两数相加(链表) --为完成积分任务

在这里插入图片描述

这题是比较经典的,看的LeetCode刷题视频中都有提到

        newHead = ListNode(0)  # 创建一个新的链表
        newP = newHead
        p1, p2 = l1, l2
        while p1 or p2:
            # 1. 找到操作数 a, b , 进位 jin, 并计算当前计算的进位
            a = p1.val if p1 else 0  # 获取p1
            b = p2.val if p2 else 0  # 获取p2
            div = (a + b + newP.val) % 10  # 考虑进制 newP.val
            jin = (a + b + newP.val) // 10
            # 2. 更新指针后移, 要注意 p1, p2 为 None的判断,不可前移
            if p1: p1 = p1.next 
            if p2: p2 = p2.next
            # 3. 赋值
            newP.val = div
            # 4. 判断是否需要创建新节点
            if p1 or p2 or jin > 0:
                newP.next = ListNode(jin)  # 当jin >0 ,创建的是含值的
                newP = newP.next
        
        return newHead

猜你喜欢

转载自blog.csdn.net/weixin_45492560/article/details/120625895