leetcode解题2.两数相加-python3题解

2019年12月18日 08:40 阅读 166 评论 0

仿leetcode官方类ListNode定义

解决调试代码报错:

name 'ListNode' is not defined//ListNode' object has no attribute 'val'.

原因:估计leetcode上面平台调试代码的时候启用了自己的一些库文件。 在本地ied调试的时候要加上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())+"}"

不过就算我们定义了这个类,在本地调试的过程中,我们传参的形式还是list。但是在leetcode提交代码并不是,而是应该官方通过接口将我们传入的[1,2,3]list形式参数转化成了ListNode了。

所以我们还要在本地测试之前添加判断参数形式的代码

if isinstance(l1,list):

            l1 = ListNode(l1)

            l2 = ListNode(l2)

我们来看看vscode调试打印的效果:

if __name__ == "__main__":

    test = Solution()

    print(test.addTwoNumbers([1,3],[2,1,3]))

调试结果:(和官方定义得那个输出是一样的)

 f:/Leetcode/2.两数相加.py

ListNode {val: 3, next: ListNode {val: 4, next: ListNode {val: 3, next: None}}}

源码储存在github上,欢迎来提bug哦!-点击访问

如果觉得不错请给我一个star谢谢了Stray_Camel(^U^)ノ~YO

原创文章,转载请注明出处:https://boywithacoin.cn/article/leetcodejie-ti-2-liang-shu-xiang-jia-python3ti-jie/


您尚未登录,请 登录注册 后评论
    0 人参与 | 0 条评论
    暂时没有评论,欢迎来尬聊!