[leetcode: Python]19. Remove Nth Node From End of List
2017-05-19 08:28
489 查看
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.
解题思路:加一个头结点dummy,并使用双指针p1和p2。p1先向前移动n个节点,然后p1和p2同时移动,当p1.next==None时,此时p2.next指的就是需要删除的节点。
方法一:72ms
方法二:55ms
方法三:45ms
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.
解题思路:加一个头结点dummy,并使用双指针p1和p2。p1先向前移动n个节点,然后p1和p2同时移动,当p1.next==None时,此时p2.next指的就是需要删除的节点。
方法一:72ms
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def removeNthFromEnd(self, head, n): """ :type head: ListNode :type n: int :rtype: ListNode """ dummy = ListNode(0) dummy.next = head p1 = p2 = dummy for i in range(n): p1 = p1.next while p1.next: p1 = p1.next p2 = p2.next p2.next = p2.next.next return dummy.next
方法二:55ms
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def removeNthFromEnd(self, head, n): """ :type head: ListNode :type n: int :rtype: ListNode """ return self.helper(head, n)[1] def helper(self, head, n): if head == None: return (0,None) num, ref = self.helper(head.next, n) head.next = ref if num == n-1: return (num + 1, ref) else: return (num + 1, head)
方法三:45ms
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def removeNthFromEnd(self, head, n): """ :type head: ListNode :type n: int :rtype: ListNode """ p1=head p2=head for i in range(n): p1=p1.next if p1==None: p2=p2.next return p2 while p1.next!=None: p1=p1.next p2=p2.next p2.next=p2.next.next return head
相关文章推荐
- python写算法题:leetcode: 19. Remove Nth Node From End of List
- Leetcode 19. Remove Nth Node From End of List(python)
- python实现 LeetCode19——Remove Nth Node From End of List
- [leetcode] 19. Remove Nth Node From End of List python实现【easy】
- LeetCode 19. Remove Nth Node From End of List (Python)
- LeetCode 19 — Remove Nth Node From End of List(C++ Java Python)
- [LeetCode] 19. Remove Nth Node From End of List 删除链表的倒数第N个节点 @python
- 19. Remove Nth Node From End of List Leetcode Python
- LeetCode 19 Remove Nth Node From End of List (C,C++,Java,Python)
- leetcode_[python/C++]_19. Remove Nth Node From End of List(删除链表末第n个节点)
- LeetCode | #19 Remove Nth Node From End of List
- 【LeetCode with Python】 Remove Nth Node From End of List
- leetcode[19]Remove Nth Node From End of List
- LeetCode19——Remove Nth Node From End of List
- LeetCode 19: Remove Nth Node From End of List
- LeetCode19:Remove Nth Node From End of List
- [LeetCode]19 Remove Nth Node From End of List
- [leetcode 19] Remove Nth Node From End of List
- leetcode_19_Remove Nth Node From End of List
- leetcode19-Remove Nth Node From End of List