[Leetcode][Python]19: Remove Nth Node From End of List

# -*- coding: utf8 -*-‘‘‘__author__ = ‘[email protected]‘

19: Remove Nth Node From End of Listhttps://oj.leetcode.com/problems/remove-nth-node-from-end-of-list/

Given a linked list, remove the nth node from the end of list and return its head.

For example,

   Given linked list: 1->2->3->4->5, and n = 2.

   After removing the second node from the end, the linked list becomes 1->2->3->5.Note:Given n will always be valid.Try to do this in one pass.

===Comments by Dabay===那种两个指针同时走的解法,应该是不符合题意的。人家要求的一次pass,你两个指针同时走,实际上是2次pass了。思路一:    遍历的时候,把每个node放到一个栈中,然后更加n弹出到相应的位置删除节点。空间复杂度为ListNode的长度。思路二:    用一个大小为n+1的队列来记录指针之前的n个节点。当指针到最后的时候,删除队列中的第二元素。空间复杂度为n+1。‘‘‘

# Definition for singly-linked list.class ListNode:    def __init__(self, x):        self.val = x        self.next = None

class Solution:    # @return a ListNode    def removeNthFromEnd(self, head, n):        cursor = new_head = ListNode(0)        new_head.next = head        queue = []        while cursor:            queue.append(cursor)            if len(queue) > n + 1:                queue.pop(0)            cursor = cursor.next        previous = queue.pop(0)        to_del = queue.pop(0)        previous.next = to_del.next        return new_head.next        # cursor = new_head = ListNode(0)        # new_head.next = head        # stack = []        # while cursor:        #     stack.append(cursor)        #     cursor = cursor.next        # while n > 1:        #     stack.pop()        #     n = n - 1        # to_del = stack.pop()        # previous = stack.pop()        # previous.next = to_del.next        # return new_head.next

def main():    sol = Solution()    root = ListNode(1)    n2 = ListNode(2)    n3 = ListNode(3)    n4 = ListNode(4)    root.next = n2    n2.next = n3    n3.next = n4    sol.removeNthFromEnd(root, 1)    while root:        print "%s -> " % root.val,        root = root.next    print " End"

if __name__ == ‘__main__‘:    import time    start = time.clock()    main()    print "%s sec" % (time.clock() - start)
时间: 2024-12-24 21:54:59

[Leetcode][Python]19: Remove Nth Node From End of List的相关文章

【LeetCode】 19. Remove Nth Node From End of List 解题小结

题目: Given a linked list, remove the nth node from the end of list and return its head. For example, Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes 1->2->3->5. 首先容易想到的是

【LeetCode】19. Remove Nth Node From End of List

题目: 思路:如果链表为空或者n小于1,直接返回即可,否则,让链表从头走到尾,每移动一步,让n减1. 1.链表1->2->3,n=4,不存在倒数第四个节点,返回整个链表 扫过的节点依次:1-2-3 n值得变化:3-2-1 2.链表1->2->3,n=3 扫过的节点依次:1-2-3 n值得变化:2-1-0 3.链表1->2->3,n=2 扫过的节点依次:1-2-3 n值得变化:1-0--1 当走到链表结尾时:1.n>0,说明链表根本没有第n个节点,直接返回原链表:

leetCode 19. Remove Nth Node From End of List 链表

19. Remove Nth Node From End of List Given a linked list, remove the nth node from the end of list and return its head. For example,    Given linked list: 1->2->3->4->5, and n = 2.    After removing the second node from the end, the linked lis

61. Rotate List(M);19. Remove Nth Node From End of List(M)

61. Rotate List(M) Given a list, rotate the list to the right by k places, where k is non-negative. For example: Given 1->2->3->4->5->NULL and k = 2, return 4->5->1->2->3->NULL. Total Accepted: 102574 Total Submissions: 42333

Leetcode 线性表 Remove Nth Node From End of List

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie Remove Nth Node From End of List Total Accepted: 12160 Total Submissions: 41280 Given a linked list, remove the nth node from the end of list and return its head. For example, Given linked list: 1

19. Remove Nth Node From End of List(js)

19. Remove Nth Node From End of List Given a linked list, remove the n-th node from the end of list and return its head. Example: Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes

leetCode 19.Remove Nth Node From End of List(删除倒数第n个节点) 解题思路和方法

Remove Nth Node From End of List Given a linked list, remove the nth node from the end of list and return its head. For example, Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes

LeetCode 19 Remove Nth Node From End of List (C,C++,Java,Python)

Problem: Given a linked list, remove the nth node from the end of list and return its head. For example, Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes 1->2->3->5. Not

19. Remove Nth Node From End of List Leetcode Python

Given a linked list, remove the nth node from the end of list and return its head. For example, Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes 1->2->3->5. Note: Given