zoukankan      html  css  js  c++  java
  • 19. 删除链表的倒数第N个节点

    19. 删除链表的倒数第N个节点

    题意

    删除链表的倒数第N个结点

    解题思路

    先让快结点移动n个位置,接着再让慢结点和快结点同时移动,发现出慢结点就是要删除的结点,将前结点指向删除结点的下一个结点即可;

    实现

    class Solution(object):
       def removeNthFromEnd(self, head, n):
           """
          执行用时 : 36 ms, 在Remove Nth Node From End of List的Python提交中击败了12.60% 的用户
    内存消耗 : 11.7 MB, 在Remove Nth Node From End of List的Python提交中击败了0.91% 的用户
          :type head: ListNode
          :type n: int
          :rtype: ListNode
          """
           slow = fast = head
           # 因为题目说明了n是个正常值,也就是肯定会是[1, len(head)]
           # 加个异常捕获,如果链表长度不够n,则直接返回头结点
           try:
              while n:
                   fast = fast.next
                   n -= 1
           except:
               return head
           # 如果快结点为空,说明肯定是要删除倒数第len(head)个结点,也就是头结点
           if not fast:
               return head.next
           prev = slow
           while slow and fast:
               prev = slow
               slow = slow.next
               fast = fast.next
           prev.next = slow.next
           return head

  • 相关阅读:
    张旭结对编程作业
    团队第一次作业(软工C#造梦厂)
    张旭第二次作业
    跨域问题
    .Net Core3.1使用AspectCore
    .Net中HttpClient之SendAsync方法
    两个具有相同属性的类赋值
    工具类--HttpUtils
    工具类--CacheHelper
    工具类--JsonHelper
  • 原文地址:https://www.cnblogs.com/George1994/p/10597912.html
Copyright © 2011-2022 走看看