删除链表的倒数第n个结点

发布于:2022-12-25 ⋅ 阅读:(150) ⋅ 点赞:(0)

给你一个链表,删除链表的倒数第 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;
}


网站公告

今日签到

点亮在社区的每一天
去签到