假设我们有一个链表。我们必须从列表末尾删除第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]