题解 | #从单向链表中删除指定值的节点#

从单向链表中删除指定值的节点

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

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt(); //节点个数
            ListNode head = new ListNode(in.nextInt());
            //后续输入总是两个节点为一组,共n-1组,1表示头结点
            for(int i = 0; i < n-1; i++){
                ListNode secondNode = new ListNode(in.nextInt());
                int firstKey = in.nextInt();
                //遍历链表找firstNode的位置
                ListNode node = head;
                while(node != null && node.key != firstKey){
                    node = node.next;
                }
                secondNode.next = node.next;
                node.next = secondNode;
            }
            //结束,获取要删除的节点
            int removeKey = in.nextInt();
            //设置虚拟头结点
            ListNode dummyHead = new ListNode(-1, head);
            ListNode node = dummyHead;
            while(node.next != null && node.next.key != removeKey){
                node = node.next;
            }
            node.next = node.next.next; //删除node.next节点
            //输出链表数据
            ListNode iterator = dummyHead.next;
            while(iterator != null){
                System.out.print(iterator.key + " ");
                iterator = iterator.next;
            }
        }
    }
}

//时间复杂度: O(n^2)

//节点类 - 单向链表
class ListNode{
    int key;
    ListNode next;
    ListNode(int key){
        this.key = key;
        this.next = null;
    }

    ListNode(int key, ListNode next){
        this.key = key;
        this.next = next;
    }
}

全部评论

相关推荐

2024-11-28 22:27
已编辑
西南交通大学 Java
Kensley:交大的学弟,整体挺好的 稍微有点乱可以考虑做减法了 并发和java可以合一起,知识上补充一下Redis集群技术的死角,主从,Sentinel,Cluster。 大计基改成课程就行:《计算机网络》《操作系统原理》《数据结构》《算法》。 最重要的,项目还要再挖掘,要用【问题/场景】驱动开发,效果放在最后一句就行,“基于XXX/集成XXX实现XXX功能,【解决XXX问题】,效果XXX”,比如基于Redis实现商品信息的读缓存,解决了浏览高峰时因高频访问MySQL偶发卡顿的问题,体感性能上升30% 排版相关的:1. 大段文本要做提炼,比如“XXX等有基本的了解”改为“了解XXX”,文本相关都可以喂给GPT看看精简效果;2.黑体粗有点多,长文本和奖项的加粗去掉,奖项的时间不用列;3. 项目和实习的时间挪到后面,保持一致
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务