【发布时间】:2020-05-05 09:44:09
【问题描述】:
链接 - https://leetcode.com/problems/remove-nth-node-from-end-of-list/
我的方法:
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
h = head
td = h
c = 0
while head.next is not None:
c+=1
print(c,n)
if c>n:
td = td.next
head = head.next
if c + 1 != n:
td.next = td.next.next
return h
它在 [1,2] 和 n = 2 等边界情况下失败,有什么方法可以修改它以使其适用于所有边界情况并被接受? (我知道我们可以使用慢速和快速指针来解决这个问题)
【问题讨论】:
-
你的代码甚至不是pythonic...
-
能否详细说明。
-
首先,如果您使用的是 python 类,您需要在 def__init__() 中定义“self”是什么。然后,'def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:' 不是你应该定义一个函数的变量的方式。你能检查一下你在复制时是否犯了一些错误吗?
-
这只是 leetcode 的包装方式,让我们知道预期的内容。它类似于“ def removeNthFromEnd(self, head, n):”和“ListNode”是为我们定义的。我们唯一的工作就是正确地编写函数,仅此而已。这就是我的逻辑失败的地方,只需从逻辑角度看一下。
-
但恐怕这不是 SO 提出问题的方式,在这里你最好给出你的代码和输入的最小可重现示例。
标签: python linked-list reverse