1.链表
链表由一系列不必在内存中相连的结构构成,这些对象按线性顺序排序。每个结构含有表元素和指向后继元素的指针。最后一个单元的指针指向NULL。为了方便链表的删除与插入操作,可以为链表添加一个表头。
删除操作可以通过修改一个指针来实现。
插入操作需要执行两次指针调整。
2.问题描述
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:给定的 n 保证是有效的。
进阶:你能尝试使用一趟扫描实现吗?
3.思想
对链表进行一次遍历,确定要删除的位置,
#!/user/bin/env python
#-*- coding:utf-8 -*-
# @Time : 2018/12/5 15:34
# @Author : 刘
# @Site :
# @File : 19removeNthFromEnd.py
# @Software: PyCharm
class Solution:
def removeNthFromEnd(self, head, n):
"""
:type head: ListNode
:type n: int
:rtype: ListNode
"""
count = 0 #计数
temp= head #链表表头
while(temp): #遍历
temp = temp.next #扫描,temp为扫描指针
count +=1
dela = count-n#要删除的位置
temp = head #重新赋值
if dela ==0:
return temp.next #返回链表
for i in range(count):
if i ==dela-1:
temp.next= temp.next.next#删除指定位置
return head
else:
temp = temp.next