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

  • 相关阅读:
    Web应用程序并发问题处理的一点小经验
    *.pvr.ccz文件还原成png格式
    在python 中is和= = 的区别
    pyhton,数据类型
    python,序列化
    python, 操作文件和目录
    python文件,字符串,二进制的读写
    io编程,python
    python,错误、调试和测试
    python,多线程
  • 原文地址:https://www.cnblogs.com/George1994/p/10597912.html
Copyright © 2011-2022 走看看