Leetcode||23. Merge k Sorted Lists

来源:互联网 发布:mysql解压版安装配置 编辑:程序博客网 时间:2024/06/09 22:22

23. Merge k Sorted Lists

  • Total Accepted: 116272
  • Total Submissions: 455841
  • Difficulty: Hard
  • Contributors: Admin

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.


这题和21题类似,一开始我逐个归并,直接超时,使用二分法归并就AC,还是二分大法好啊

代码如下:

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode mergeKLists(ListNode[] lists) {int len = lists.length;if (len <= 0) {return null;}if (len == 1) {return lists[0];}while (len>1) {int mid=(len+1)/2;    for(int i=0;i<len/2;i++)    {    lists[i]=mergeTwoLists(lists[i],lists[i+mid]);    }    len=mid;}return lists[0];    }public ListNode mergeTwoLists(ListNode l1, ListNode l2) {        ListNode result = new ListNode(0);        ListNode lastNode = result;        while (l1 != null && l2 != null) {if (l1.val < l2.val) {lastNode.next = l1;l1 = l1.next;} else {lastNode.next = l2;l2 = l2.next;}lastNode = lastNode.next;}        if (l1 != null) {lastNode.next = l1;} else {lastNode.next = l2;}        return result.next;    }}


0 0
原创粉丝点击