remove the nth node from the end of the list

problem description:
  remove the nth node from the end of the list

for example:

  given: 1->2->3  n = 1

  return: 1->2

thought:

  first:you should know the length

  second:if the del node is the  first node ,just return head.next;esle find the prior node of the del node

  third: use a node record the prior node,and make the node.next = del.node.next

  last:return head

there is my python solution:

# 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
        """
        i = 0 
        first = head
        while first:
            i += 1
            first = first.next
        first=head
        if i-n==0:
            return head.next
        j = 0
        while j<i-n-1:
            first = first.next
            j += 1
        second = first
        first = first.next
        second.next = first.next
        return head

it can beat 78% python users

posted @ 2017-04-18 10:01  whatyouknow123  阅读(172)  评论(0编辑  收藏  举报