LeetCode19删除链表的倒数第N个节点(java实现,详细思路包教包会)

2024-01-03 17:49:13

今天,我们分享的题目是leetcode第19题,话不多说,上题目。
在这里插入图片描述
解题思路:在这里插入图片描述
我们还是定义一个虚拟节点vir指向头结点,假如我们要删除的是倒数第二个节点,也就是3,那么我们的节点指针必须指向节点2才可以进行删除3号节点的操作。那么我们首先需要确定的是vir节点需要移动几次才可以指向欲删除节点的前一个节点
下面是具体的实现代码:

public  static ListNode removeNthFromEnd(ListNode head, int n) {
       ListNode vir=new ListNode();
       vir.next=head;
       ListNode cur=vir;
       ListNode sz=head;
       int count=0;
        while (sz!=null){
            sz=sz.next;
            count++;
        }
        while (count-n>0){
            cur=cur.next;
            count--;
        }
       if (cur.next.next==null){
           cur.next=null;
       }else {
           cur.next=cur.next.next;
       }

    return vir.next;
    }

可以看到,我们首先是对链表的长度进行统计,然后就可以通过链表长度及传入的n进行计算cur需要移动几次。这里cur指向的就是vir节点。最后将vir.next进行返回。
那么本次的题目讲解就到这里结束了,觉得博主写的对你有帮助的希望别忘了给博主一个三连,灰常感谢(●’?’●)!

文章来源:https://blog.csdn.net/Kirihara_Yukiho/article/details/135366683
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。