python在列表末尾删除一个_从Python的列表末尾删除第N个节点

假设我们有一个链表。我们必须从列表末尾删除第N个节点,然后返回其头。因此,如果列表类似于[1、2、3、4、5、6]且n = 3,则返回的列表将为[1、2、3、5、6]。

为了解决这个问题,我们将遵循以下步骤-如果头后没有节点,则返回None

前:=头,后::头,计数器:= 0并设置:=假

而计数器<= n如果front不存在,则将标志设置为true,然后从循环中退出

front:=前面的下一个,并将计数器增加1

在前面的时候前:=下一个

后退:=后退

如果标志为假,则temp:=后一个

后面的下一个:=临时的下一个

下一温度:=无

否则head:=下一首

回头

示例(Python)

让我们看下面的实现以更好地理解-class ListNode:

def __init__(self, data, next = None):

self.val = data

self.next = next

def make_list(elements):

head = ListNode(elements[0])

for element in elements[1:]:

ptr = head

while ptr.next:

ptr = ptr.next

ptr.next = ListNode(element)

return head

def print_list(head):

ptr = head

print('[', end = "")

while ptr:

print(ptr.val, end = ", ")

ptr = ptr.next

print(']')

class Solution(object):

def removeNthFromEnd(self, head, n):

if not head.next:

return None

front=head

back = head

counter = 0

flag = False

while counter<=n:

if(not front):

flag = True

break

front = front.next

counter+=1

while front:

front = front.next

back = back.next

if not flag:

temp = back.next

back.next = temp.next

temp.next = None

else:

head = head.next

return head

head = make_list([1,2,3,4,5,6])

ob1 = Solution()print_list(ob1.removeNthFromEnd(head, 3))

输入值[1,2,3,4,5,6]

3

输出结果[1,2,3,5,6]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值