一、题目要求
给你一个链表,删除链表的倒数第 n
个结点,并且返回链表的头结点。
如下图所示:
二、解题思路
(1)找到需要删除的节点的上一个节点
(2)将需要删除的节点的上一个节点的下一跳指向需要删除的节点的下一跳,将需要删除的节点置空;
(3)返回头结点;
三、具体实现
如图所示:
四、代码实现
public class Solution19 {
public ListNode removeNthFromEnd(ListNode head, int n) {
if (head == null || head.next == null) {
return null;
}
ListNode right = head;
ListNode left = head;
for (int i = 0; i < n; i++) {
right = right.next;
}
if (right == null) {
return head.next;
}
while (right.next != null) {
right = right.next;
left = left.next;
}
ListNode del = left.next;
left.next = del.next;
del.next = null;
return head;
}
}