博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] 23. Merge k Sorted Lists
阅读量:4488 次
发布时间:2019-06-08

本文共 1707 字,大约阅读时间需要 5 分钟。

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

 

1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10     11 public:12     ListNode* mergeKLists(vector
& lists) {13 int k = lists.size();14 if (k == 0) return NULL;15 16 while (k > 1){17 for (int i = 0; i < k /2; i++){18 lists[i] = mergeTwoLists(lists[i], lists[k-1-i]);19 }20 if (k%2){21 k = k/2 + 1;22 }else{23 k = k / 2;24 }25 }26 27 return lists[0];28 }29 30 private:31 ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {32 ListNode *dummy = new ListNode(0);33 ListNode *ret = NULL;34 35 36 ListNode *p1 = l1;37 ListNode *p2 = l2;38 39 ListNode *p = dummy;40 41 while(p1 && p2){42 if (p1->val < p2->val){43 p->next = p1;44 p1 = p1->next;45 }else{46 p->next = p2;47 p2 = p2->next;48 }49 p = p->next;50 }51 52 p1 = (!p1) ? p2 : p1;53 54 while (p1){55 p->next = p1;56 // don't forget to move p1 !!57 p1 = p1->next;58 p = p->next;59 }60 61 ret = dummy->next;62 delete dummy;63 return ret;64 }65 };

 

转载于:https://www.cnblogs.com/amadis/p/5926556.html

你可能感兴趣的文章
Hook CreateProcess
查看>>
C#与C++之间类型的对应
查看>>
(C++C#类型互转工具)使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明...
查看>>
面试题
查看>>
Powershell + HTA
查看>>
IFG以太网帧间隙
查看>>
WINDOWS API 大全(一)
查看>>
Wmic
查看>>
WINDOWS API 大全(二)
查看>>
SetWindowsHookEx失败
查看>>
C/C++判断字符串是否包含某个字符串
查看>>
[C#菜鸟]C# Hook
查看>>
easyhook源码分析二——注入
查看>>
C#调用C++的库 P/Invoke工具集
查看>>
easyhook源码分析三——申请钩子
查看>>
easyhook源码分析一
查看>>
对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们...
查看>>
VC中MessageBox与AfxMessageBox用法与区别
查看>>
Web开发使用jsTree实例
查看>>
JDK的安装和Java环境变量配置
查看>>