给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
示例 1:
输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:
输入:head = [1], n = 1
输出:[]
示例 3:
输入:head = [1,2], n = 1
输出:[1]
提示:
链表中结点的数目为 sz
1 <= sz <= 30
0 <= Node.val <= 100
1 <= n <= sz
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/remove-nth-node-from-end-of-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
public static ListNode removeNthFromEnd(ListNode head, int n) { int length = 1; ListNode cur = head; //得到链表的总长度 while (cur.next != null) { cur = cur.next; length++; } if(length==1){ return null; } if(n==length){ //删除头结点 一定要加这句话,不然当链表为1,2 //删除的是倒数第2个结点的时候会删错 return head.next; } int count = 0; ListNode pre = head; cur = pre.next; //单链表的删除需要借助辅助指针 //找到倒数第n个结点 while(count<length-n-1){ pre = cur; cur = cur.next; count++; } //删除 if(cur!=null) { pre.next = cur.next; } return head; }