删除链表的倒数第N个节点----java

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

作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xn2925/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        int len = 0;    //链表长度
        ListNode headlen = head;    //同一个链表,用来操作长度
        ListNode pre = head;        //同一个链表,删除节点
        while(headlen != null){     //当下一节点不为空,长度++
            len++;
            headlen = headlen.next; //一个节点接着一个节点
        }
        if (len - n == 0){          //当长度减去删除的倒数节点为0,直接返回此节点下一节点
            return head.next;
        }
        for(int i=0;i<len-n-1;i++){ //遍历下一节点,找到删除节点的上一节点
            pre = pre.next;
        }
        pre.next = pre.next.next;   //删除节点
        return head;    //返回链表
    }
    
}
posted @ 2021-12-27 21:59  网抑云黑胶SVIP用户  阅读(40)  评论(0编辑  收藏  举报