zoukankan      html  css  js  c++  java
  • leetcode-23

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

    示例:

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/merge-k-sorted-lists
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    class Solution {
        public ListNode mergeKLists(ListNode[] lists) {
            int len = lists.length;
            if (len == 0) {
                return null;
            }    
            // 将n个链表以中间为对称,合并,即合并 
            while(len>1) {
                for (int i=0; i<len/2; i++) {
                    lists[i] = mergeTwoLists(lists[i], lists[len-1-i]);
                }
                len = (len+1)/2;
            }
            return lists[0];
        }
        
        // 合并两个链表
        public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
            ListNode head = new ListNode(-1);
            ListNode p = head;
            while(l1 != null && l2 != null) {
                if (l1.val < l2.val) {
                    p.next = l1;
                    l1 = l1.next;
                } else {
                    p.next = l2;
                    l2 = l2.next;
                }
                p = p.next;
            }
            if (l1 != null) {
                p.next = l1;
            } else if (l2 != null) {
                p.next = l2;
            }
            return head.next;
        }
    }

    此题就是考察一个分治的思路。

    一个没有高级趣味的人。 email:hushui502@gmail.com
  • 相关阅读:
    美工代码注意事项(html+div+css+js)
    vss搭建于操作
    那些年用过的好工具
    javascript 和jqurry详解
    jeecg list页面鼠标悬停展示内容
    页面自适应优化备份
    查询数据字典备份
    页面 微操作备份
    小数保留位数
    从阿里云那文件 解析xml备份
  • 原文地址:https://www.cnblogs.com/CherryTab/p/12107791.html
Copyright © 2011-2022 走看看