原题:
Given a linked list, remove the n-th node from the end of list and return its head.
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.
理解:
- 考察无头单链表移除节点代码编写
思路:
- 遍历数组得到长度
- 遍历到剔除节点的前一个节点
- 剔除节点
- 特殊情况分析
- 返回结果
代码:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def removeNthFromEnd(self, head, n):
"""
:type head: ListNode
:type n: int
:rtype: ListNode
"""
len_head=1
flag=1
next_node=head
#得到链表长度
while next_node.next:
next_node=next_node.next
len_head=len_head+1
#特殊情况,移除第一个节点
if n==len_head:
return head.next
#遍历到移除节点前一个节点
first_node=head
while flag<len_head-n:
first_node=first_node.next
flag+=1
#移除节点
first_node.next=first_node.next.next
#返回结果
return head
结果:
Runtime: 40 ms, faster than 99.22% of Python3 online submissions for Remove Nth Node From End of List.