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

  • 相关阅读:
    转载php在IIS中运行
    程序员必去的网站
    分享一下jQuery UI的地址
    dbcp相关配置
    shell学习第二弹-进阶
    shell学习第一弹-初识
    java servlet 3.0文件上传
    Junit使用第二弹
    各个数据库中,查询前n条记录的方法
    junit使用第一弹
  • 原文地址:https://www.cnblogs.com/George1994/p/10597912.html
Copyright © 2011-2022 走看看