读题心路历程:到了链表题了,感觉长时间不做就又忘记链表的基础操作了。这道题说删除倒数第n个节点,难点就是如何找到倒数第n个节点,因为是链表,不能用”.size()-n“,这里可以定义两个节点,这两个节点相距n,当最后的节点遍历到null的时候,前面那个节点,自然而然就指着倒数第n个节点的。
过程举例:n =2
具体代码:代码参考leetcode官方解。感觉链表题,难的地方更多的是理解上。
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode* dummy_head = new ListNode(0, head);
ListNode* front = head;
ListNode* back = dummy_head;
for (int i = 0; i < n; i++)
{
front = front->next;
}
while (front)
{
front = front->next;
back = back->next;
}
back->next = back->next->next;
ListNode* result = dummy_head->next;
delete dummy_head;
return result;
}