题解 | #删除链表的倒数第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;
    }


}

全部评论

相关推荐

牛客41406533...:回答他在课上学,一辈子待在学校的老教授用三十年前的祖传PPT一字一句的讲解,使用谭浩强红皮书作为教材在devc++里面敲出a+++++a的瞬间爆出114514个编译错误来学这样才显得专业
点赞 评论 收藏
分享
12-15 11:27
门头沟学院 Java
哇哇的菜鸡oc:所有人不要理会,就好了,后面他就知道怎么回事了,只能说有的时候市场都是被宰的人搞坏的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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