在Java中,合并多个有序链表可以通过使用归并排序的思想来实现。下面是一个简单的示例代码,演示如何合并多个有序链表:
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public class MergeSortedLists {
public ListNode mergeKLists(ListNode[] lists) {
if (lists == null || lists.length == 0) {
return null;
}
return mergeLists(lists, 0, lists.length - 1);
}
private ListNode mergeLists(ListNode[] lists, int start, int end) {
if (start == end) {
return lists[start];
}
int mid = start + (end - start) / 2;
ListNode left = mergeLists(lists, start, mid);
ListNode right = mergeLists(lists, mid + 1, end);
return mergeTwoLists(left, right);
}
private ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1 == null) {
return l2;
}
if (l2 == null) {
return l1;
}
if (l1.val < l2.val) {
l1.next = mergeTwoLists(l1.next, l2);
return l1;
} else {
l2.next = mergeTwoLists(l1, l2.next);
return l2;
}
}
}
这个示例代码中,ListNode 表示链表节点,mergeKLists 方法接收一个 ListNode 数组,表示多个有序链表,然后调用 mergeLists 方法进行递归的分治合并。mergeTwoLists 方法用于合并两个有序链表。请注意,这只是一个示例,具体实现可能会根据实际需求和数据结构的定义有所不同。