坚持5天了,加油谢谢支持!有不足请您指出
package LeetCode;
import java.util.ArrayList;
import java.util.List;
public class MoreListNode {
public ListNode mergeKLists(ListNode[] lists) {
if (lists.length<=0)return null;
ListNode head=null;
//比较出最小值一个初始值
int minval=Integer.MAX_VALUE;
//记录最大值时i的值
int mini=0;
for (int i = 0; i <lists.length ; i++) {
if (lists[i]==null)continue;
if (lists[i].val<minval){
minval=lists[i].val;
mini=i;
}
}
if(minval==Integer.MAX_VALUE){
return null;
}else {
head = lists[mini];
if ( lists[mini].next==null){
lists[mini]=null;
}else {
lists[mini] = lists[mini].next;
}
head.next = mergeKLists(lists);
return head;
}
}
public static void main(String[] args) {
ListNode l1 = new ListNode(1);
ListNode l11 = new ListNode(3);
ListNode l12 = new ListNode(5);
ListNode l2 = new ListNode(1);
ListNode l21 = new ListNode(3);
ListNode l22 = new ListNode(4);
l1.next = l11;
l11.next = l12;
l2.next = l21;
l21.next = l22;
ListNode[] r={l1,l2};
MoreListNode a=new MoreListNode();
a.mergeKLists(r);
}
}
本文介绍了一个解决LeetCode上合并K个已排序链表问题的算法。通过递归方式,每次找出当前所有链表头部的最小值,将其作为新链表的一部分,直至所有链表元素被遍历完。此算法适用于Java环境,使用了ArrayList和List等集合类。
1953

被折叠的 条评论
为什么被折叠?



