From f905bd9bca65b38442fd717bc77bb714a5790ca3 Mon Sep 17 00:00:00 2001 From: Cool <747682928@qq.com> Date: Tue, 27 Aug 2024 00:29:47 +0800 Subject: [PATCH] 2024/8/26 LeetCode Hot100 LinkedList --- .../com/cool/hot100/linkedlist/Num23.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/main/java/com/cool/hot100/linkedlist/Num23.java diff --git a/src/main/java/com/cool/hot100/linkedlist/Num23.java b/src/main/java/com/cool/hot100/linkedlist/Num23.java new file mode 100644 index 0000000..9de180f --- /dev/null +++ b/src/main/java/com/cool/hot100/linkedlist/Num23.java @@ -0,0 +1,54 @@ +package com.cool.hot100.linkedlist; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * Created with IntelliJ IDEA. + * + * @Author: Cool + * @Date: 2024/08/26/23:12 + * DayNumber 2 + * Hard 3 + */ +public class Num23 { + + + public ListNode mergeKLists(ListNode[] lists) { + if (lists.length == 0) return null; + List list = Arrays.stream(lists).collect(Collectors.toList()); + while (list.size() > 1) { + for (int i = list.size() - 1; i > 0; i -= 2) { + + ListNode listNode = list.get(i); + ListNode listNode1 = list.get(i - 1); + ListNode newListNode = merge(listNode1, listNode); + list.remove(i); + list.remove(i-1); + list.add(newListNode); + + } + } + return list.get(0); + } + + public ListNode merge(ListNode node1, ListNode node2) { + ListNode head = new ListNode(0); + ListNode node = head; + while (node1 != null && node2 != null) { + if (node1.val <= node2.val) { + node.next = node1; + node1 = node1.next; + } else { + node.next = node2; + node2 = node2.next; + } + node = node.next; + } + node.next = node1 == null ? node2 : node1; + return head.next; + } + +}