题解 | #合并k个已排序的链表#
合并k个已排序的链表
https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param lists ListNode类ArrayList * @return ListNode类 */ //合并两个有序链表 public ListNode mergeKList(ListNode phead1,ListNode phead2){ ListNode head=new ListNode(-1); ListNode p=head; ListNode p1=phead1; ListNode p2=phead2; while(p1!=null&&p2!=null){ if(p1.val<p2.val){ p.next=p1; p1=p1.next; }else{ p.next=p2; p2=p2.next; } p=p.next; } if(p1!=null){ p.next=p1; } if(p2!=null){ p.next=p2; } return head.next; } //调用合并两个有序列表来遍历list public ListNode mergeKLists (ArrayList<ListNode> lists) { // write code here ListNode result=null; //java中list for循环新写法 for(ListNode list:lists){ result=mergeKList(result,list); } return result; } }
java中list for循环:
for(int i=0;i<lists.size();i++){
result=mergeKList(result,lists.get(i));
}