力扣練習鏈表問題代碼不能在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/

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容