您的位置:首页 > Web前端 > Node.js

LeetCode - Remove Nth Node From End of List

2015-04-30 16:38 246 查看

LeetCode - Remove Nth Node From End of List

The Problem is described as following:

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.

My Solution is as following:

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

class Solution:
# @param {ListNode} head
# @param {integer} n
# @return {ListNode}
def removeNthFromEnd(self, head, n):
newhead = ListNode(0)
newhead.next = head
left, right, i = newhead, newhead, 0
while i < n and right.next is not None:
right = right.next
i += 1
while right.next is not None:
right = right.next
left = left.next
if left.next is not None:
temp = left.next
left.next = temp.next
return newhead.next


这里着重提两点:其一是在处理之前添加一个额外的头指针,以应对需要删除所给的ListNode的head的情况;其二就是快慢指针的使用,实现单次遍历完成删除的过程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode