-
Notifications
You must be signed in to change notification settings - Fork 0
/
19.py
31 lines (30 loc) · 777 Bytes
/
19.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 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
"""
lens, ahead = 0, head
while ahead:
lens += 1
ahead = ahead.next
if not head or lens < n:
return None
if lens == n:
return head.next
pre, ahead = None, head
while ahead:
n -= 1
if pre:
pre = pre.next
if n == -1:
pre = head
ahead = ahead.next
pre.next = pre.next.next
return head