[leetcode] 19. remove nth node from end of list

Leetcode link for this question

Discription:

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.

Analyze:

Code 1:

# 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
        """
        front,rear=head,head
        while n>0:
            n-=1
            rear=rear.next
        if not rear :
            return head.next
        while rear.next:             ##
            rear=rear.next
            front=front.next
        front.next=front.next.next   #modify the next attribute of node
        return head    

Submission Result:

Status: Accepted
Runtime: 56 ms
Ranking: beats 58.16%