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

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

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

import java.util.*;
import java.io.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try {
            String[] str = br.readLine().split(" ");
            int count = Integer.valueOf(str[0]);
            Map<Integer, Node> map = new HashMap();
            Node head = new Node(Integer.valueOf(str[1]), null);
            map.put(Integer.valueOf(str[1]), head);
            Node tail = head;
            Node temp;
            for (int i = 2; i < str.length - 1; i += 2) {
                int cur = Integer.valueOf(str[i]);
                int pre = Integer.valueOf(str[i + 1]);
                map.putIfAbsent(cur,  new Node(cur, null));
                map.putIfAbsent(pre,  new Node(pre, null));
                Node node = map.get(pre);
                temp = node.next;
                Node c = map.get(cur);
                node.next = c;
                c.next = temp;
                //tail=c;
            }
            Node nodeDel = map.get(Integer.valueOf(str[str.length - 1]));
            Node preDel = head;
            while (preDel.next != nodeDel && head != nodeDel) {
                preDel = preDel.next;
            }
            Node tempDel = nodeDel.next;
            if (head == nodeDel) {
                head = tempDel;
            } else {
                preDel.next = tempDel;
                nodeDel.next = null;
            }
            map.remove(Integer.valueOf(str[str.length - 1]));
            while (head != null) {
                System.out.print(head.val + " ");
                head = head.next;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static class Node {
        int val;
        Node next;

        public Node(int val, Node next) {
            this.val = val;
            this.next = next;
        }
    }
}

全部评论

相关推荐

我也不知道起什么名字...:我感觉刷到8-10遍就悟了,之前特别难懂的题,现在就很自然的感觉不就这样的吗。比如链表排序,两个有序数组求中位数,背包问题等
牛客激励计划
点赞 评论 收藏
分享
用微笑面对困难:不是你千万别小看这家公司,他们的预估市值成倍上涨,三次在报告看见这个公司了,总之如果是给股权的话可以试试,未来没准真能发家致富哈哈哈哈
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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