python listnode.val_力扣练习链表问题代码不能在PyCharm上跑?

直接将leetcode上写的代码复制到IDE上会有问题 因为python没有ListNode对象,所以lc自己创建了一个ListNode类:

class ListNode:

def __init__(self, val):

if isinstance(val, int):

self.val = val

self.next = None

但是就算加上这个类,也没法在PyCharm上正常运行,会出现下面报错:

'ListNode' object has no attribute 'val'

在IDE上传参的形式还是 list。可能力扣通过接口将我们传入的list转化成了 ListNode 了。

所以还需添加判断参数形式的代码:

class ListNode:

def __init__(self, val):

if isinstance(val, int):

self.val = val

self.next = None

elif isinstance(val, list):

self.val = val[0]

self.next = None

cur = self

for i in val[1:]:

cur.next = ListNode(i)

cur = cur.next

def gatherAttrs(self):

return ", ".join("{}: {}".format(k, getattr(self, k)) for k in self.__dict__.keys())

def __str__(self):

return self.__class__.__name__ + " {" + "{}".format(self.gatherAttrs()) + "}"

这部分是ListNode类的代码,整个都需要添加

下面这部分是改变传参的代码,需要加入到Solution类里

class Solution:

def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:

if isinstance(l1, list):

l1 = ListNode(l1)

l2 = ListNode(l2)

#下面是自己写的代码

再次运行起码没有ListNode类的问题了。精力跟时间其实应该放在算法上,但是在通过代码实现算法的过程中总是有很多甚至占了主要时间和精力的问题。解决了又会有本末倒置的悔感,可是不解决···那不就是没实现吗

有参考https://leetcode-cn.com/circle/article/s3RcOW/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值