合并有序链表

合并有序链表

题目

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
LeetCode:合并有序链表

示例 1:
图片

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例 2:

输入:l1 = [], l2 = []
输出:[]
示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

提示:

两个链表的节点数目范围是 [0, 50]
-100 <= Node.val <= 100
l1 和 l2 均按 非递减顺序 排列


代码:

package com.itdfq.algorithm;

import java.util.ArrayList;
import java.util.List;

/**
 * @author: GodChin
 * @date: 2022/3/17 11:36
 * @mark:
 */
public class Demo1 {
    public static void main(String[] args) {
        Node node1 = new Node(1, new Node(2, new Node(4, null)));
        Node node2 = new Node(1, new Node(3, new Node(4, null)));
//        Node merge = merge(node1, node2);
        Node merge = mergeTwoLists(node2, node1);
        List<Integer> list = getList(merge);
        System.out.println(list);

    }

    public static List<Integer> getList(Node node) {
        List<Integer> list = new ArrayList<>();
        while (node != null) {
            list.add(node.val);
            node=node.next;
        }
        return list;
    }


    public static Node mergeTwoLists(Node list1, Node list2) {
        if (list1 == null) {
            return list2;
        }
        if (list2 == null) {
            return list1;
        }
        if (list1.val < list2.val) {
            list1.next = mergeTwoLists(list1.next, list2);
            return list1;
        } else {
            list2.next = mergeTwoLists(list2.next, list1);
            return list2;
        }
    }

}

class Node {
    int val;
    Node next;

    Node() {
    }

    Node(int val) {
        this.val = val;
    }

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


   转载规则


《合并有序链表》 duan 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
深度优先搜索(DFS) 深度优先搜索(DFS)
学习深度优先搜索相关知识
2022-12-07
下一篇 
java解析视频分辨率和时长 java解析视频分辨率和时长
解析视频分辨率和时长下载工具使用的工具是:FFmpeg 分为win 和 linux需要提前安装 FFmpeg windows版本 linux版本 有道笔记 windows 安装将下载的进行解压,配置系统环境变量 CMD命令行解析视频信息
2022-11-25
  目录