''' 解题思路: 1、将链表节点加入一个List型数组 arr, 通过操作arr[i].next来实现删除 2、head实际长度可能为 0,1,2,3……,head值尽量不要动,其它操作用副本t=head 3、删除的位置在中间是正常情况,异常情况要考虑头尾,超范围等 ''' # class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # # @param head ListNode类 # @param n int整型 # @return ListNode类 # class Solution: def removeNthFromEnd(self , head , n ): # write code here if not head: return None t = head arr = [] while t: arr.append(t) t = t.next m = len(arr) if m==1: if n==1: return None else: return head if n==1: arr[-2].next = None head = arr[0] elif n==m: head = arr[1] elif 1<=n-1<=m and 1<=n+1<=m: arr[-(n+1)].next = arr[-(n-1)] return head ''' head = ListNode(1) head.next = ListNode(2) head.next.next = ListNode(3) head = Solution().removeNthFromEnd(head,3) while head: print(head.val, end=' ') head = head.next '''