简单题。唯一的小技巧是使用了指向指针的指针。
class Solution {
public:
ListNode *removeNthFromEnd(ListNode *head, int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
ListNode * forward = head;
ListNode ** current = &head;
n--;
while (n--)
{
forward = forward->next;
}
while (forward->next != 0)
{
forward = forward->next;
current = &((*current)->next);
}
*current = (*current)->next;
return head;
}
};
python3,使用了头结点
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
tmp = head
while n > 0:
tmp = tmp.next
n -= 1
current = head
dummy = ListNode(0)
dummy.next = current
prev = dummy
while tmp != None:
tmp = tmp.next
current = current.next
prev = prev.next
prev.next = current.next
return dummy.next