- Remove Nth Node From End of List My Submissions QuestionEditorial Solution
Given a linked list, remove the nth node from the end of list and return its head.
For example,
Given linked list: 1->2->3->4->5, and n = 2.
After removing the second node from the end, the linked list becomes 1->2->3->5.
Note:
Given n will always be valid.
Try to do this in one pass.
意思是说给你一个单链表, 然后让你删掉从后往前的第n个,比如这个
1−>2−>3−>4−>5
,删掉倒数第二个就变成了
1−>2−>3−>5.
而且有要求,最好跑一次。。
那想法就是记录一下呗,每次跑的时候都记一下它前第n个位置那个节点。如果当前节点变成了空(也就是到了结尾),则删掉对应的记录的那个节点(前第n个节点)。
双指针的意思
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def removeNthFromEnd(self, head, n):
"""
:type head: ListNode
:type n: int
:rtype: ListNode
"""
if head == None:
return
p = q = head
r = None
i = 0
while q != None:
if i != n:
i +=1
q = q.next
continue
else:
r = p
p = p.next
q = q.next
if r ==None:
return head.next
r.next = p.next
return head