首页 > 编程语言 > 详细

LeetCode-Python-删除链表解题思路

时间:2020-11-03 10:22:13      阅读:30      评论:0      收藏:0      [点我收藏+]

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。


 
技术分享图片
image.png

解题思路:

  1. 使用双指针,快指针与慢指针的间隔为n;
  2. 涉及到最后要删除慢指针的节点,为了方便,先开辟一个node为pre,pre的next指向head,快慢指针均从pre开始遍历;
  3. 先由快指针向前走n步,再快慢指针同时向前走,直到快指针的next指向空;
  4. 那么此时慢指针的next即为要删除的节点,此时令slow.next=slow.next.next即可。

Python3代码:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
        pre = ListNode(0)
        pre.next = head
        slow, fast = pre, pre
        while n>0:
            n-=1
            fast = fast.next
        
        while fast.next:
            slow = slow.next 
            fast = fast.next
        
        slow.next = slow.next.next
        return pre.next
 
 

LeetCode-Python-删除链表解题思路

原文:https://www.cnblogs.com/ecplko/p/13917714.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!