- 删除链表的倒数第 N 个结点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/flood-fill
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
public static ListNode removeNthFromEnd(ListNode head, int n) {
ListNode temp = head;
// 获取整个链表的长度
int length = 0;
while (temp != null) {
length++;
temp = temp.next;
}
temp = head;
// 如果长度和要删除的位置相同,那么说明要删除的就是第一个结点,直接返回第一个结点后面的即可
if(length == n) {
return temp.next;
}
// 找到倒数第n个结点的前一个结点
for (int i = 0; i < length - n - 1; i++) {
temp = temp.next;
}
temp.next = temp.next.next;
return head;
}
先通过遍历整个链表得到链表的总长度length,然后需要删除的倒数第index结点位置可以通过从头开始遍历到length-index 的位置,然后通过改变next的指向删除即可,特殊情况,如果链表的长度和要删除的位置相等,那么意味着要删除的就是第一个结点,直接返回第一个结点之后的链表即可。