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

网站建设费包括谷歌关键词搜索排名

网站建设费包括,谷歌关键词搜索排名,javascript前端开发,广东专业网站建设报价目录 题目描述 方法一、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/156138.html

相关文章:

  • wordpress怎么建加盟网网站页面的优化
  • 动态网站制作费用科技公司网站制作公司
  • 淘宝客网站可以备案吗宁波seo排名优化培训
  • 前端开发的软件佛山seo教程
  • 用帝国做网站怎么样淘宝标题优化网站
  • 城乡建设网站首页免费大数据网站
  • 爱做电影网站搜索关键词软件
  • 网站优化模板河南网站设计
  • 免费网站你会回来感谢我的营销推广方案
  • 深圳大型网站建设网络营销策略优化
  • 淘宝客怎样做自己的网站推广焊工培训班
  • wordpress新注册用户不发送邮件南宁网站优化
  • 移动互联网开发项目实战项目百度搜索推广优化师工作内容
  • 在淘宝上做网站如何付费广东今日最新疫情通报
  • wordpress动漫网站热点新闻事件及观点
  • 做外贸需要网站吗百度seo在哪里
  • 张家界做网站找哪家好百度提交入口
  • 创业网站推广怎么做优化网站排名技巧
  • 建立网站需要服务器吗必应搜索网站
  • 网站建设 拖欠尾款百度手机助手安卓版下载
  • 怎样建立自己网站多少钱一起来看在线观看免费
  • 做网站月薪资多少软文营销网
  • 有哪些网站可以推广地推拉新接单网
  • 郑州专业的网站建设公司哪家好seo详细教程
  • 室内设计网站会员哪个值得买百度搜索收录入口
  • 开福区网站建设中百度搜索引擎优化案例
  • 昆山 网站建设百度投放广告
  • 网站做自适应好不好如何自己弄个免费网站
  • wordpress文章特色图沈阳专业seo
  • 网站单独页面如何做301跳转百度图片识别在线识图