2024/8/26 LeetCode Hot100 LinkedList

This commit is contained in:
Cool 2024-08-27 00:29:47 +08:00
parent e488b9cad9
commit f905bd9bca
1 changed files with 54 additions and 0 deletions

View File

@ -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<ListNode> 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;
}
}