LeetCodeQ19:删除倒数第n个节点
2020-06-23
1 min read
题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
题解:
利用哑结点和双指针,让start指针先移动n个位置, 然后两个指针再一起移动,当start移动的已经为空了说明已经到了要删除节点的前一个节点, 让end指针指向它的下下一个节点即可完成删除
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode dh = new ListNode(0);
dh.next = head;
ListNode start = dh;
ListNode end = dh;
for (int i = 1; i <= n + 1; i++) {
start = start.next;
}
while (start != null) {
start = start.next;
end = end.next;
}
end.next = end.next.next;
return dh.next;
}