两数之和

# 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:
        if l1 is None:        #如果一个链表为空,则返回另一个
            return l2
        if l2 is None:
            return l1
        tmp = ListNode(0)     #将链表的初始节点赋值给tmp  
        res = tmp             #赋值    
        carry = 0             #进位位初始化
        while l1 or l2:       #l1或l2不为零时继续循环     
            tmp_sum = 0       #初始化求和变量
            if l1:           #如果链表l1不为零,将某节点的值放入求和变量并将l1中的值改为下个结点的地址
                tmp_sum = l1.val
                l1 = l1.next
            if l2:            #同理,将某节点值加入求和变量,并下节点地址
                tmp_sum += l2.val
                l2 = l2.next
            tmp_res = ((tmp_sum + carry) % 10)
            #将求和的值取余赋给res(本位的值)
            carry = ((tmp_sum + carry) // 10)
            #将求和的值取整赋给carry(进位的值)
            res.next = ListNode(tmp_res)  #将tmp_res的值放到res的下个节点处
            res = res.next    #res后移
            if carry :        #如果carry不为零,则对应位置相加有进位
                res.next = ListNode(1)    #将1放入res的下个节点处
        res = tmp.next    #赋值
        return res    #返回res链表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值