zoukankan      html  css  js  c++  java
  • Leetcode 19. Remove Nth Node From End of List

    Description: Given the head of a linked list, remove the nth node from the end of the list and return its head. Follow up: Could you do this in one pass?

    Link: https://leetcode.com/problems/remove-nth-node-from-end-of-list/

    解题思路: 删除倒数第n个元素,且只遍历一遍。我们熟悉的情况是删除第m个元素,但如果我们知道链表的总长度length,问题就是删除正向第m = length-n+1个元素。为了只遍历一次,在计算length的同时,记录每个node,就可以在一次遍历结束后找到第m-1个元素,然后删除它后面的一个元素,将剩余重新连接。同时考虑删除head的特殊情况。

    # Definition for singly-linked list.
    # class ListNode(object):
    #     def __init__(self, val=0, next=None):
    #         self.val = val
    #         self.next = next
    class Solution(object):
        def removeNthFromEnd(self, head, n):
            """
            :type head: ListNode
            :type n: int
            :rtype: ListNode
            """
            if not head: return head
            p = head
            length = 0
            nodes = []
            while p:
                nodes.append(p)
                p = p.next
                length += 1
            if n == length:
                return head.next
            else:
                pre_node = nodes[length - n - 1]
                pre_node.next = pre_node.next.next
                return head

    日期: 2020-11-14  Hope the prepare will go well, hope I could make progress and have large improvement.

  • 相关阅读:
    软件开发规范
    内置模块
    自定义模块
    装饰器 递归
    内置函数 闭包
    生成器 推导式
    函数名运用 新版格式化输出 迭代器
    函数进阶
    pycharm快捷键
    移动端必测点
  • 原文地址:https://www.cnblogs.com/wangyuxia/p/13973214.html
Copyright © 2011-2022 走看看