当前位置: 首页 > wzjs >正文

wordpress老网站重装法北京市违法建设投诉网站

wordpress老网站重装法,北京市违法建设投诉网站,沈阳高铁站,科技网站模板免费下载目录 题目描述 方法一、k-1次两两合并 方法二、分治法合并 方法三、使用优先队列 题目描述 23. Merge k Sorted Lists 方法一、k-1次两两合并 选第一个链表作为结果链表,每次将后面未合并的链表合并到结果链表中,经过k-1次合并,即可得到…

目录

题目描述

方法一、k-1次两两合并

方法二、分治法合并

方法三、使用优先队列


题目描述

23. Merge k Sorted Lists

方法一、k-1次两两合并

选第一个链表作为结果链表,每次将后面未合并的链表合并到结果链表中,经过k-1次合并,即可得到答案。假设每个链表的最长长度是n,时间复杂度O(n+2n+3n+...(k-1)n) = O(\frac{k(k-1))}{2}n) = O(k^{2}n)。空间复杂度O(1)。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* mergeKLists(vector<ListNode*>& lists) {int n = lists.size();if(n == 0)return nullptr;ListNode* ans = lists[0];for(int i = 1;i< n;i++){ans = merge(ans,lists[i]);}return ans;}ListNode* merge(ListNode* L1,ListNode* L2){ListNode* dummy = new ListNode();ListNode* cur = dummy;while(L1&&L2){if(L1->val < L2->val){cur->next = L1;cur = L1;L1 = L1->next;}else{cur->next = L2;cur = L2;L2 = L2->next;}}cur->next = L1 != nullptr ? L1 : L2;ListNode* res = dummy->next;delete dummy;return res;}
};

方法二、分治法合并

时间复杂度 O(kn×logk)。空间复杂度 O(logk) 。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* mergeKLists(vector<ListNode*>& lists) {int n = lists.size();if(n == 0)return nullptr;return merge(lists,0,n-1);}ListNode* merge(vector<ListNode*>& lists,int left,int right){if(left == right)return lists[left];if(left>right)return nullptr;int mid = left + ((right-left)>>1);return mergeTwoList(merge(lists,left,mid),merge(lists,mid+1,right));}ListNode* mergeTwoList(ListNode* L1,ListNode* L2){ListNode* dummy = new ListNode();ListNode* cur = dummy;while(L1&&L2){if(L1->val < L2->val){cur->next = L1;cur = L1;L1 = L1->next;}else{cur->next = L2;cur = L2;L2 = L2->next;}}cur->next = L1 != nullptr ? L1 : L2;ListNode* res = dummy->next;delete dummy;return res;}
};

方法三、使用优先队列

时间复杂度 O(kn×logk)。空间复杂度 O(k) 。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {struct Node{ListNode* node_ptr;int val;bool operator<(const Node& rhs) const{return val>rhs.val;}};
public:ListNode* mergeKLists(vector<ListNode*>& lists) {priority_queue<Node> Heap;for(auto& node:lists){if(node){Heap.push({node,node->val});}}ListNode* head = nullptr;ListNode* cur = nullptr;while(!Heap.empty()){if(head == nullptr){head = Heap.top().node_ptr;cur = head;}else{cur->next = Heap.top().node_ptr;cur = cur->next;}Heap.pop();if(cur->next){Heap.push({cur->next,cur->next->val});}}return head;}
};
http://www.dtcms.com/wzjs/574231.html

相关文章:

  • 免费优化网站的软件sem竞价广告
  • 做网站石材推销什么叫一级域名二级域名
  • 济南网站建设团队郑州公司网站开发
  • 专业做淘宝网站绍兴俄罗斯引擎搜索
  • 做视频上传多少个网站做别人一样的网站吗
  • 网站技术培训班有哪些种类商丘网约车
  • 管理网站建设哪里好速度超快的wordpress模板
  • 医疗网站不备案做自己的网站要多久
  • 模板下载网站源码广告平台代理
  • php做网站用html做吗可以做c语言任务的网站
  • 个人网站建立教程正规网站建设套餐报价
  • 淄博网站运营公司wordpress实用
  • 河北手机网站制作多少钱建设工程包括哪些
  • 徐州建设局网站安全证用wordpress建立专业网站视频教程
  • 如何建立一个网站论坛服务器win7网站建设
  • 网站服务包括什么大连 做 企业网站
  • 霸州做网站1766534168需要网站开发
  • 阿里云 企业网站选哪种公司电脑管理软件
  • 佛山建网站公司做设计的网站商家入驻
  • 怎样更换动易2006网站模板江苏省建设工程招标网官网
  • 网站推广的方法和渠道男女做羞羞的事情网站
  • 网站运营模式电梯行业网站怎么做
  • 营销型网站建设的好处网站开发用户名不存在
  • python建设购物网站如何能查到百度搜索排名
  • 做金融网站拘留多久网站开发常用的前端框架
  • 吴桥做网站价格做特殊单页的网站
  • 企业网站前端模板下载网站的前端和后端
  • 站长之家网页模板国外高清人像图片素材网站
  • 如何建立网站和网页可以自己做网站
  • 东莞高端商城网站制作中山教育平台网站建设