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 均按 非递减顺序 排列

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/merge-two-sorted-lists

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


代码实现:

/**

 * Definition for singly-linked list.

 * public class ListNode {

 *     int val;

 *     ListNode next;

 *     ListNode() {}

 *     ListNode(int val) { this.val = val; }

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

 * }

 */

class Solution {

    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {

        List listNodes = new ArrayList<>();

        while (l1 != null) {

            listNodes.add(l1);

            l1 = l1.next;

        }

        while (l2 != null) {

            listNodes.add(l2);

            l2 = l2.next;

        }

        Collections.sort(listNodes, new Comparator() {

            @Override

            public int compare(ListNode o1, ListNode o2) {

                return o1.val - o2.val;

            }

        });

        ListNode newNode = null;

        for (int i = 0; i < listNodes.size() - 1; i++) {

            listNodes.get(i).next = listNodes.get(i + 1);

        }

        if (!listNodes.isEmpty()) {

            newNode = listNodes.get(0);

        }

        return newNode;

    }

}

你可能感兴趣的:(leetcode--合并两个有序链表)