求问这个题可测试的代码应该怎么修改,如示例三这个例子的测试代码
class ListNode:def __init__(self, val=0, next=None):
self.val = val
self.next = next
def removeNthFromEnd(head: ListNode, n: int) -> ListNode:
def getLength(head: ListNode) -> int:
length = 0
while head:
length += 1
head = head.next
return length
dummy = ListNode(0, head)
length = getLength(head)
cur = dummy
for i in range(1, length - n + 1):
cur = cur.next
cur.next = cur.next.next
return dummy.next 一个pop全解决了 qq1151985918 发表于 2022-8-12 11:48
一个pop全解决了
求示范代码 kking1 发表于 2022-8-12 18:44
求示范代码
>>> a = list(range(10))
>>> a
>>> a.pop(-1)
9
>>> a
>>> a.pop(-2)
7
>>> a
>>> a.pop(-3)
5
>>> a
>>>
qq1151985918 发表于 2022-8-12 18:47
这个不是链表把? # 链表
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
# 删除倒数第n个节点,并返回头节点
def removeNthFromEnd(head, n):
# 创建一个新的链表,用来存储链表的值
new_head = ListNode(0)
new_head.next = head
# 创建两个指针,一个指向新的链表的头节点,一个指向新的链表的尾节点
p1 = new_head
p2 = new_head
# 先将p2向后移动n个节点
for i in range(n):
p2 = p2.next
# 当p2为None时,说明p2已经到达链表的尾部,此时p1指向的是倒数第n个节点
while p2:
p1 = p1.next
p2 = p2.next
# 删除p1指向的节点
p1.next = p1.next.next
return new_head.next ZhKQYu 发表于 2022-8-12 19:03
这个代码怎么测试呢?像示例三那样 ZhKQYu 发表于 2022-8-12 19:03
也就是怎么输入head=,n=1来执行代码,这个我现在不会 kking1 发表于 2022-8-13 12:22
也就是怎么输入head=,n=1来执行代码,这个我现在不会
# 节点
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
# 链表
class LinkList:
# 初始化一个链表时,head指向空
def __init__(self):
self.head = None
# 采用头插法
def add(self, x):
node = ListNode(x) # 创建一个新节点
node.next = self.head # 新节点指向头节点
self.head = node # 头节点指向新节点
# 显示链表
def show(self):
p = self.head
while p:
print(p.val, end=' ')
p = p.next
print()
# 删除倒数第n个节点
def removeNthFromEnd(self, n):
return removeNthFromEnd(self.head, n)
# 删除倒数第n个节点,并返回头节点
def removeNthFromEnd(head, n):
# 创建一个新的节点
new_head = ListNode(0)
new_head.next = head
# 创建两个指针,一个指向新的链表的头节点,一个指向新的链表的尾节点
p1 = new_head
p2 = new_head
# 先将p2向后移动n个节点
for i in range(n):
p2 = p2.next
# print(p2.val)
# 当p2为None时,说明p2已经到达链表的尾部,此时p1指向的是倒数第n个节点
while p2.next:
p1 = p1.next
p2 = p2.next
# 删除p1指向的节点
p1.next = p1.next.next
return new_head.next
if __name__ == '__main__':
l = LinkList()
l.add(1)
l.add(2)
l.add(3)
l.add(4)
l.add(5)
l.show()
l.removeNthFromEnd(3)
l.show()
稍微写了一下实现链表,然后把那个删除倒数第几个的代码修改了一下
链表的逻辑基本就是这样的 kking1 发表于 2022-8-13 12:22
也就是怎么输入head=,n=1来执行代码,这个我现在不会
你这样不就是个列表吗,不需要用到自定义链表吧,只是实现一个简单的数据存取,直接pop即可 ZhKQYu 发表于 2022-8-13 12:43
你这样不就是个列表吗,不需要用到自定义链表吧,只是实现一个简单的数据存取,直接pop即可
我看那个示例就是这样写的 kking1 发表于 2022-8-13 13:19
我看那个示例就是这样写的
有更详细的题目要求吗,或者别人给了别的什么提示,我瞅瞅
ZhKQYu 发表于 2022-8-13 13:24
有更详细的题目要求吗,或者别人给了别的什么提示,我瞅瞅
https://leetcode.cn/problems/remove-nth-node-from-end-of-list/ kking1 发表于 2022-8-13 16:14
https://leetcode.cn/problems/remove-nth-node-from-end-of-list/
https://s1.328888.xyz/2022/08/13/T3upB.png
直接赋值上面的代码提交即可,测试可以通过的
就是下面这段代码
def removeNthFromEnd(head, n):
# 创建一个新的节点
new_head = ListNode(0)
new_head.next = head
# 创建两个指针,一个指向新的链表的头节点,一个指向新的链表的尾节点
p1 = new_head
p2 = new_head
# 先将p2向后移动n个节点
for i in range(n):
p2 = p2.next
# print(p2.val)
# 当p2为None时,说明p2已经到达链表的尾部,此时p1指向的是倒数第n个节点
while p2.next:
p1 = p1.next
p2 = p2.next
# 删除p1指向的节点
p1.next = p1.next.next
return new_head.next ZhKQYu 发表于 2022-8-13 16:32
直接赋值上面的代码提交即可,测试可以通过的
就是下面这段代码
上面的链接掉了,重新上传了一个
https://s3.bmp.ovh/imgs/2022/08/13/bf1e9d6f60821390.png ZhKQYu 发表于 2022-8-13 16:35
上面的链接掉了,重新上传了一个
en,但是我因为没有输入,所以我在vscode上就不能看到输出结果 ZhKQYu 发表于 2022-8-13 16:35
上面的链接掉了,重新上传了一个
我习惯在力扣上找题,然后在vscode上实现出来,并输入示例得到相应结果 kking1 发表于 2022-8-13 16:48
我习惯在力扣上找题,然后在vscode上实现出来,并输入示例得到相应结果
那就得自己去实现链表的细节,我上面的代码就是基本的一个逻辑,只是采用尾插法,你改成头插法,然后自己实现一个输入即可 kking1 发表于 2022-8-13 16:48
我习惯在力扣上找题,然后在vscode上实现出来,并输入示例得到相应结果
if __name__ == '__main__':
# l = LinkList()
# l.add(1)
# l.add(2)
# l.add(3)
# l.add(4)
# l.add(5)
# l.show()
# l.removeNthFromEnd(3)
# l.show()
temp_node = eval(input("请输入链表,格式为列表形式:"))
temp_n = eval(input("请输入倒数第n个节点:"))
l = LinkList()
for i in temp_node:
l.add(i)
print("原链表:", end="")
l.show()
l.removeNthFromEnd(temp_n)
print("删除倒数第{}个节点后的链表:".format(temp_n), end="")
l.show()
大概就是这样实现 ZhKQYu 发表于 2022-8-13 12:38
稍微写了一下实现链表,然后把那个删除倒数第几个的代码修改了一下
链表的逻辑基本就是这样的
https://sm.ms/image/YxlUfVBH8GrEy53,这里面最后那行代码,如果是头结点指向新节点不应该是self.head.next = node吗?
页:
[1]
2