题解 | #删除链表的倒数第n个节点#

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

https://www.nowcoder.com/practice/f95dcdafbde44b22a6d741baf71653f6

package com.hhdd;

/**
 * 给定一个链表,删除链表的倒数第 n 个节点并返回链表的头指针
 *
 * @Author huanghedidi
 * @Date 2022/7/23 11:27
 */
public class 删除链表的倒数第n个节点 {

    public static void main(String[] args) {
        ListNode listNode = new ListNode(1).setNext(2).setNext(3).setNext(4).setNext(5);
        ListNode res = removeNthFromEnd(listNode, 1);
        ListNode.print(res);
    }


    public static ListNode removeNthFromEnd(ListNode head, int n) {
        // write code here
        ListNode cur1 = head;
        ListNode cur2 = head;
        int i = 1;
        while (i <= n && cur1 != null) {
            cur1 = cur1.next;
            i++;
        }
        if (i <= n) {
            // 说明长度根本不够n
            return head;
        }
        if (cur1 == null) {
            // 说明删除的是头节点
            return head.next;
        }
        // 记录删除节点的前节点
        ListNode tmp1 = null;
        // 同时推进 找到倒数 n个 节点
        while (cur1 != null) {
            if (cur1.next == null) {
                tmp1 = cur2;
            }
            cur1 = cur1.next;
            cur2 = cur2.next;
        }
        tmp1.next = cur2.next;
        cur2 = null;
        return head;
    }


}

全部评论

相关推荐

06-12 17:07
沈阳大学 Java
AAA射频张总:冬天也发扬下,我怕冷
点赞 评论 收藏
分享
nus22016021404:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务