【发布时间】:2020-10-22 09:55:22
【问题描述】:
我正在尝试以下代码挑战:
给你一个 N 个节点的链表。任务是从链表中删除循环(如果存在)。
注意:C是最后一个节点所连接的节点的位置。如果为0则没有循环。
示例 1:
输入:
N = 3 value[] = {1,3,4} C = 2输出: 1
说明:在第一个测试用例中 N = 3.有节点的链表 给出 N = 3。这里,x = 2 表示最后一个节点与 xth 连接 链表的节点。因此,有 存在循环。
示例 2:
输入:
N = 4 value[] = {1,8,3,4} C = 0输出: 1
解释: N = 4 和 x = 0,其中 表示 lastNode->next = NULL,因此 链表不包含 任何循环。
你的任务:
你的任务是完成函数
removeLoop()。该函数的唯一参数是链表的头指针。只需删除列表中的循环(如果存在),而无需从列表中断开任何节点。如果您的代码正确,驱动程序代码将打印 1。预期时间复杂度: O(n)
预期的辅助空间: O(1)
约束:
1 <= N <= 104
我的代码:
'''
class Node:
def __init__(self,val):
self.next=None
self.data=val
'''
def removeLoop(head):
slow = fast = head
while fast!=None and fast.next!=None:
slow = slow.next
fast = fast.next.next
if slow==fast:
x = slow
temp = head
while x.next!=temp.next:
x = x.next
temp = temp.next
x.next = None
return head
我收到运行时错误。谁能告诉我为什么?
【问题讨论】:
标签: python algorithm linked-list