Leetcode2 两数之和

class Solution:
    def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
        # 这个题目采用一个新的思路,先将链表中存储的数据进行反转,反转之后的数字就是整数,按照整数相加得到运算结果
        # 然后将结果转化为字符串,再将字符串转化为链表输出,链表中数字是按照逆序存储的;
        # 反转链表,然后整数相加;

        # 另外一种解题思路是:按照加法操作,进位是否产生对结果有很大的影响
        # 加法的结果还需要有一个链表来进行存储
        curr = ListNode(0)
        head = curr
        jinwei = 0
        while l1 != None or l2 != None:
            if l1 == None:
                x1 = 0
            else:
                x1 = l1.val
                l1 = l1.next
            if l2 == None:
                x2 = 0
            else:
                x2 = l2.val
                l2 = l2.next
            # 得到了两个链表对应位置的值,现在要将对应的值进行相加,考虑进位,进位要么是0,要么是1,是对10取余数

            sum = (x1+x2+jinwei) % 10         # 取模,返回除法的余数
            jinwei = (x1 + x2 +jinwei) // 10  # 取整除运算,返回结果的整数部分
            curr.next = ListNode(sum)
            curr = curr.next
        if jinwei == 1:
            curr.next = ListNode(jinwei)
        return head.next  # 返回储存结果的头节点

错误记录:

  • while 循环的判断提交,初次写成and了,只要两个链表中有一个在相应位置没有值,就要补零。
  • 基本的python运算符不清楚,比如 % 表示取模,返回除法的余数, // 表示整除,返回除法结果的整数部分。下面来几个小例子:
print( 10//10)
print(10%10)
print('============')
print(6//10)
print(6%10)
print('============')
print(16//10)
print(16%10)

结果:

1
0
============
0
6
============
1
6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值