Merge k sorted linked lists

来源:互联网 发布:cassandra java 取数据 编辑:程序博客网 时间:2024/05/16 18:18

1.判断链表个数,arraylist.size()

2.在第0个链表加个头结点,依次合并每个链表。

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { *         val = x; *         next = null; *     } * } */public class Solution {    public ListNode mergeKLists(ArrayList<ListNode> lists) {        // Start typing your Java solution below        // DO NOT write main() function        int len = lists.size();        if(len==0)return null;        if(len==1)return lists.get(0);        if(lists.get(0)==null&&lists.get(1)==null)return null;        ListNode head = new ListNode(0);        head.next = lists.get(0);        lists.set(0,head);        for(int i =1;i<=len-1;i++){            ListNode l1= head.next;            ListNode l2= lists.get(i);            ListNode pre = head;            while(l1!=null&&l2!=null){                if(l1.val<=l2.val)                    {pre.next = l1;pre = l1;l1 = l1.next;}                else                    {pre.next = l2;pre = l2;l2 = l2.next;}                   }            while(l1!=null){                pre.next = l1; pre = l1;l1 = l1.next;            }            while(l2!=null){                pre.next = l2; pre = l2;l2 = l2.next;            }                    }        return head.next;    }}


原创粉丝点击