您的位置:首页 > 其它

Leetcode 19 删除链表的倒数第N个节点【链表】

2019-01-24 12:08 323 查看

本题是比较基础的链表题。
1.思路
1)单次遍历
2)双指针
Note:两次遍历的方法只需要一个指针,空间换时间,因此单次遍历不可避免使用双指针

首先,双指针指向头指针,rear向后移动n次。
如果此时指针已经指向None【边界情况】,意思就是第一个元素是需要被删除的,返回head.next。
如果此时指针不指向None,则head和rear都向后移动,直到rear.next是None,此时删除head的下一个节点即可。

解题步骤:
1)给几个指针
2)rear后移
3)边界情况检查——rear已经指向None
4)同时后移,直至结束条件
5)删除选定节点

2.代码

# 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
"""
result = head
rear = head

for i in range(n):
rear = rear.next
if rear == None:
return head.next

while(rear.next):
head = head.next
rear = rear.next
tmp = head.next
head.next = tmp.next
del tmp
return result
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: