日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode Merge k Sorted Lists 解决报告

發布時間:2024/4/17 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode Merge k Sorted Lists 解决报告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
https://oj.leetcode.com/problems/merge-k-sorted-lists/
歸并K已經整理陣列,和分析算法的復雜。



解決報告:無論是不考慮優化,最簡單的實現是要重新走路List<ListNode>。對當中每一個鏈表同當前鏈表做一遍類似于歸并排序最后一步的merge操作。
算法復雜度是O(KN)

public class Solution {ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode head = new ListNode(-1);ListNode current = head;while(list1!=null&&list2!=null) {if(list1.val<list2.val) {current.next = list1;list1 = list1.next;} else {current.next = list2;list2 = list2.next;}current = current.next;}if(list1!=null) {current.next = list1;} else {current.next = list2;}return head.next;}public ListNode mergeKLists(List<ListNode> lists) {if(lists==null||lists.size()==0) {return null;}ListNode head = lists.get(0);for(int i=1;i<lists.size();i++) {head = mergeTwoLists(head, lists.get(i));}return head;} }
上面的方法TLE了,上網查了一下注意到通過使用歸并排序算法可將鏈表排序的時間復雜度縮減到的O(NlgN)。詳細的計算公式就是:



所以借鑒歸并排序的方法,自頂向下,先遞歸的對鏈表的前半部分和后半部分進行歸并排序,最后再merge。
下面代碼順利AC了,時間復雜度為:O(NlogK)

public class Solution {ListNode merge2Lists(ListNode list1, ListNode list2) {ListNode head = new ListNode(-1);ListNode current = head;while(list1!=null&&list2!=null) {if(list1.val<list2.val) {current.next = list1;list1 = list1.next;} else {current.next = list2;list2 = list2.next;}current = current.next;}if(list1!=null) {current.next = list1;} else {current.next = list2;}return head.next;}public ListNode mergeKLists(List<ListNode> lists) {if(lists==null||lists.size()==0) {return null;}if(lists.size()==1) {return lists.get(0);}int length = lists.size() ;int mid = (length - 1)/2 ;ListNode l1 = mergeKLists(lists.subList(0,mid + 1)) ;ListNode l2 = mergeKLists(lists.subList(mid + 1,length)) ;return merge2Lists(l1,l2) ;} }




版權聲明:本文博主原創文章,博客,未經同意不得轉載。

總結

以上是生活随笔為你收集整理的LeetCode Merge k Sorted Lists 解决报告的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。