zoukankan      html  css  js  c++  java
  • 合并K个排序链表

    合并 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。

    示例:

    输入:
    [
      1->4->5,
      1->3->4,
      2->6
    ]
    输出: 1->1->2->3->4->4->5->6

    解法:
    采用两两个合并的的方法
    1.设置一个两个列表合并的函数
    2.再用二路归并进行函数调用
    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    
    
    class Solution {
        public ListNode mergeKLists(ListNode[] lists) {
            //有K个链表
            int k = lists.length;
            if(k==0) return null;
            ListNode result = lists[0];
            while (k > 1) {            
                for (int i = 0; i < k/2; i++) 
                    lists[i] = mergeTwoLists(lists[i], lists[i + (k + 1)/2]);
                k = (k + 1) / 2;
            }
            return lists[0];
        }
        public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
            ListNode p1,p2;
            p1 = l1;
            p2=l2;
            ListNode head = new ListNode(0);
            ListNode r = head;
            if(l1==null) return l2;
            if(l2==null) return l1;
            //合并
            while(p1!=null && p2!=null){
                if(p1.val <= p2.val){
                    r.next = p1;
                    r = p1;
                    p1 = p1.next;
                }else{
                    r.next = p2;
                    r = p2;
                    p2 = p2.next;
                }    
            }
            if(p1==null){
                r.next = p2;
                r = p2;
            }     
            if(p2==null){
                r.next = p1;
                r = p1;
            }
            return head.next;
        }
    }
  • 相关阅读:
    2. 商城项目完整购物链路 lq
    如何看源码? lq
    事务的了解 lq
    1. 商城业务架构分析 lq
    并发的基础知识 lq
    mysql 索引 lq
    mysqlinnodb了解 lq
    IE6.0、IE7.0 与FireFox CSS兼容的解决方法
    CSS:html/css教程:背景图片的定位问题详解
    IE6 BUG
  • 原文地址:https://www.cnblogs.com/yejiang/p/10308877.html
Copyright © 2011-2022 走看看