我正在努力解决leetcode上的这些链表问题(以及树问题,因为它们使用类似的结构)。实例
https://leetcode.com/problems/merge-two-sorted-lists/
如果我试图在leetcode的魔法盒之外运行这段代码,就会遇到问题。
我的MergeTwoList函数在leetcode编辑器中运行良好(运行成功,被接受)
from typing import Optional
# Definition for singly-linked list.
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def mergeTwoLists(list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
prehead = ListNode(-1)
prev = prehead
while list1 and list2:
if list1.val <= list2.val:
prev.next = list1
list1 = list1.next
else:
prev.next = list2
list2 = list2.next
prev = prev.next
breakpoint()
prev.next = list1 if list1 is not None else list2
return prehead.next
if __name__ == '__main__':
l1 = ListNode(1)
l1_2 = ListNode(2)
l1_3 = ListNode(4)
l1.next = l1_2
l1_2.next = l1_3
l2 = ListNode(1)
l2_2 = ListNode(3)
l2_3 = ListNode(4)
l2.next = l1_2
l2_2.next = l1_3
print(mergeTwoLists(l1, l2))
问题是,当我试图从终端运行上述独立程序时,它会进入一个无限循环。
原因是由于我传递给函数的内容,如果我在第一个循环的末尾抛出一个断点()并检查list1和list2
(Pdb) list1
<__main__.ListNode object at 0x00000294E1F8FEE0>
(Pdb) list2
<__main__.ListNode object at 0x00000294E1F8FE20>
这是有道理的。它解释了无限循环,当转换为布尔时,类对象eval为True。
基于此,如果我想让代码在leetcode之外运行,我需要做一些不同的事情。我需要更多关于我的类定义的信息,或者我的测试用例设置错误?
有人知道更多关于Leetcode系统中ListNode类的完整定义吗?或者在我应该如何设置考试时,我缺少了什么?
非常感谢。