题解 | #链表合并#

链表合并

https://www.nowcoder.com/practice/27c833289e5f4f5e9ba3718ce9136759

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String first = scanner.nextLine();
            String second = scanner.nextLine();

            Node node1 = transform(first);
            Node node2 = transform(second);
            Node node = merge(node1, node2);


            print(node);
        }
    }


    public static Node merge(Node node1, Node node2) {
        // 找到最小的那个
        Node node = node1.value >= node2.value ? node2 : node1;
        Node cur1 = node.next;
        Node cur2 = node == node1 ? node2 : node1;
        Node pre = node;
        while (cur1 != null && cur2 != null) {
            pre.next = cur1.value >= cur2.value ? cur2 : cur1;
            pre = pre.next;
            // 下移动
            if (cur1 == pre) {
                cur1 = cur1.next;
            } else {
                cur2 = cur2.next;
            }
        }
// 如果其中一个是null后
        pre.next = cur1 == null ? cur2 : cur1;
        return node;
    }

    public static Node transform(String str) {
        Node node = null;
        Node pre = null;
        String array[] = str.split(" ");
        for (String s : array) {
            if (node == null) {
                node = new Node(Integer.parseInt(s));
                pre = node;
            } else {
                node.next = new Node(Integer.parseInt(s));
                node = node.next;
            }
        }
        return pre;
    }

    public  static void print(Node node) {
        while (node != null) {
            System.out.print(node.value + " ");
            node = node.next;
        }
    }
}

class Node {
    int value;
    Node next;
    public Node(int value) {
        this.value = value;
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-29 17:30
点赞 评论 收藏
分享
06-07 19:59
门头沟学院 C++
补药卡我啊😭:都快15年前的了还在11新特性
你的简历改到第几版了
点赞 评论 收藏
分享
uu们,拒offer时hr很生气怎么办我哭死
爱睡觉的冰箱哥:人家回收你的offer,或者oc后没给你发offer的时候可不会愧疚你,所以你拒了也没必要愧疚他。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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