方法一:
先得到listnode的长度,然后再L-n+1处断开,接上下一个node
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
dummy_head=ListNode(0)
dummy_head.next=head #把head储存起来
length=0
tmp=head
while tmp:
length+=1
tmp=tmp.next
delete_n=length-n+1
if delete_n<1:
return dummy_head.next
count=1
h=dummy_head
while count<delete_n:
h=h.next
count+=1
tmp1=h.next
h.next=tmp1.next
return dummy_head.next
方法二:
使用两个指针
#两个指针
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
dummy=ListNode(0)
dummy.next=head
first=dummy
second=dummy
count=1
while count<n+1:
first=first.next
count+=1
while first.next:
first=first.next
second=second.next
#second的下一个node要被remove
second.next=second.next.next
return dummy.next