m0_55027953 2022-10-18 11:11 采纳率: 80%
浏览 36
已结题

两数相加python

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

 

img

示例 1:

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/add-two-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

我的代码是:
class Solution:
def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
if l1[-1]!=0 and l2[-1]!=0:
c=0
d=0
e=0
f=0
m=[]
for i in l1:
c+=i*pow(10,d)
d+=1
for j in l2:
e += j * pow(10, f)
f += 1
g=c+e
h=str(g)
for k in h:
m.append(int(k))
return(m[-1::-1])
elif l1[-1]==0 and l2[-1]==0:
return([0])

它提示我:listnode object is not subscritable,代码的第一行就报错了,但我在pycharm中是可以正常运行的,请教一下大家是哪里有问题呢?还是pycharm和力扣上的编译环境不一样呢?

  • 写回答

4条回答 默认 最新

  • 吕布辕门 后端领域新星创作者 2022-10-18 11:23
    关注

    img


    给你正确答案

    
    class Solution:
        def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
            head = curr = ListNode()
            carry = val = 0
    
            while carry or l1 or l2:
                val = carry
    
                if l1: l1, val = l1.next, l1.val + val
                if l2: l2, val = l2.next, l2.val + val
    
                carry, val = divmod(val, 10)
                curr.next = curr = ListNode(val)
            
            return head.next
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 10月26日
  • 已采纳回答 10月18日
  • 创建了问题 10月18日

悬赏问题

  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示