算法-有序链表(四)删除链表的导数第N个节点

算法-有序链表(四)删除链表的导数第N个节点

递归法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public ListNode removeNthFromEnd(ListNode head, int n) {
// 定义哨兵节点,便于删除头结点
ListNode dummy = new ListNode(0,head);
removeFromEnd(dummy, n);
return dummy.next;
}
public int removeFromEnd(ListNode head, int n) {
if (head == null)
// 如果head为null,那就返回0
return 0;
// 累加,用于记录当前为倒数第 n+1 个节点
int num = removeFromEnd(head.next, n) + 1;
// 如果当前节点 + 1为导数第n + 1个节点,那就删除next的节点
if (num == n + 1) {
head.next = head.next.next;
}
return num;
}

算法-有序链表(四)删除链表的导数第N个节点
https://www.zheep.top/2024/12/08/算法-有序链表(四)删除链表的导数第N个节点/
作者
西行寺岩羊
发布于
2024年12月8日
许可协议