new_contents: 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
  
  # 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):
          if (not head) or (n == 0): return head
          
          fast = head; slow = head
          for _ in xrange(n):
              fast = fast.next
          
          if not fast:
              return head.next
          
          while fast.next:
              slow = slow.next
              fast = fast.next
              
          slow.next = slow.next.next
          return head
          
  
subject: Create Remove_Nth_Node_From_End_of_List.py