社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何在Python脚本的leetcode测试运行程序中表示这些单链表节点?

Aaron • 3 年前 • 1350 次点击  

我正在努力解决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类的完整定义吗?或者在我应该如何设置考试时,我缺少了什么?

非常感谢。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133034
 
1350 次点击  
文章 [ 1 ]  |  最新文章 3 年前