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

网站建设专家cms西安百度推广运营

网站建设专家cms,西安百度推广运营,专注邯郸建设手机网站,网站的付款链接怎么做23. 合并 K 个升序链表 - 力扣(LeetCode)https://leetcode.cn/problems/merge-k-sorted-lists/?envTypestudy-plan-v2&envIdtop-100-liked 顺序合并 合并两个有序链表作为子函数,创建一个空链表,然后对含有多个链表的数组进…

23. 合并 K 个升序链表 - 力扣(LeetCode)https://leetcode.cn/problems/merge-k-sorted-lists/?envType=study-plan-v2&envId=top-100-liked

顺序合并

合并两个有序链表作为子函数,创建一个空链表,然后对含有多个链表的数组进行遍历,不断合并空链表与当前链表得到新链表直到遍历完毕。

//c++
/*** 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* mtwo(ListNode* h1,ListNode* h2){if((!h1)||(!h2))    return h1?h1:h2;ListNode* ans=new ListNode(0),*pre=ans,*t1=h1,*t2=h2;while(t1&&t2){if(t1->val<t2->val){pre->next=t1;t1=t1->next;}else{pre->next=t2;t2=t2->next;}pre=pre->next;}pre->next=t1?t1:t2;return ans->next;}ListNode* mergeKLists(vector<ListNode*>& lists) {ListNode* ans=nullptr;for(int i=0;i<lists.size();i++)    ans=mtwo(ans,lists[i]);return ans;}
};#python
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def mtwo(self, a:ListNode,b:ListNode)->ListNode:if not a or not b:return a if a else bh=t=ListNode()aa,bb=a,bwhile aa and bb:if aa.val>bb.val:t.next=bbbb=bb.nextelse:t.next=aaaa=aa.nextt=t.nextt.next=aa if aa else bbreturn h.nextdef mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:ans=Nonefor i in lists:ans=self.mtwo(ans,i)return ans

分治合并

合并两个有序链表作为子函数,对含有多个链表的数组进行不断的二分递归,直到只含一个链表在回溯到上一个递归进行合并两个有序链表的操作直到回溯到对整个链表数组的合并。

//c++
/*** 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* mtwo(ListNode* h1,ListNode* h2){if((!h1)||(!h2))    return h1?h1:h2;ListNode* ans=new ListNode(0),*pre=ans,*t1=h1,*t2=h2;while(t1&&t2){if(t1->val<t2->val){pre->next=t1;t1=t1->next;}else{pre->next=t2;t2=t2->next;}pre=pre->next;}pre->next=t1?t1:t2;return ans->next;}ListNode* fen(vector <ListNode*> &a,int b,int c){if(b==c)    return a[b];if(b>c)    return nullptr;int m=(b+c)>>1;return mtwo(fen(a,b,m),fen(a,m+1,c));}ListNode* mergeKLists(vector<ListNode*>& lists) {return fen(lists,0,lists.size()-1);}
};#python
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def mtwo(self, a:ListNode,b:ListNode)->ListNode:if not a or not b:return a if a else bh=t=ListNode()aa,bb=a,bwhile aa and bb:if aa.val>bb.val:t.next=bbbb=bb.nextelse:t.next=aaaa=aa.nextt=t.nextt.next=aa if aa else bbreturn h.nextdef fen(self,a:List[Optional[ListNode]],b:int,c:int):if b==c:return a[b]if b>c:return Nonem=(b+c)>>1return self.mtwo(self.fen(a,b,m),self.fen(a,m+1,c))def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:return self.fen(lists,0,len(lists)-1)

优先队列合并

c++应用结构体创造最小堆的优先队列,python用库函数heapq。对多个链表的数组的多个链表的第一个元素进行堆的初始化,然后不断取堆顶,并将堆顶的下一个元素入堆,直到堆为空。

//c++
/*** 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:struct a{int val;ListNode* aa;bool operator<(const a &others) const{   return val>others.val;    }};priority_queue <a> q;ListNode* mergeKLists(vector<ListNode*>& lists) {for(auto i:lists)   if(i)   q.push({i->val,i});ListNode ans,*pre=&ans;while(!q.empty()){auto i=q.top();q.pop();pre->next=i.aa;pre=pre->next;if(i.aa->next)  q.push({i.aa->next->val,i.aa->next});}return ans.next;}
};#python
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:import heapqq=[]for i,j in enumerate(lists):if j:heapq.heappush(q,(j.val,i,j))ans=pre=ListNode(0)while q:i,j,k=heapq.heappop(q)pre.next=k pre=pre.nextif k.next:heapq.heappush(q,(k.next.val,j,k.next))return ans.next

http://www.dtcms.com/wzjs/389861.html

相关文章:

  • 镇江建设局网站南宁百度推广排名优化
  • 下载软件商店appseo外包靠谱
  • 响应式网站 测试seo关键词优化的技巧和方法
  • 有没有专门做团购的网站东莞seo外包平台
  • 一个专业做设计的网站google 推广优化
  • 深圳做微信网站建设微信管理
  • 定制网站需要多少钱西安建站推广
  • 网站建设方案书 备案宣传推广文案
  • wordpress加密目录seo关键词使用
  • 服装b2c商城网站建设龙岗seo优化
  • 河北外贸网站建设网站建设优化推广
  • h5案例欣赏手机seo排名软件
  • 南通影楼网站建设seo岗位工资
  • 做企业网站用什么一般网络推广应该怎么做
  • 建设类网站有哪些东莞网站公司哪家好
  • 搭建网站空间seo优化设计
  • 设计模板修饰演示文稿360优化大师官方官网
  • 卓越 网站建设 深圳西乡想做网络推广如何去做
  • 怎么看网站是用什么系统做的学好seo
  • 阿里云域名注册服务网站友情链接查询友情链接检测
  • 往届生做网站编辑营销管理
  • 无锡建网站价格品牌营销策划机构
  • 2网站建设总结30个免费货源网站
  • 哪个网站可以领单做效果图站长工具无忧
  • 做网站要和企业logoseo兼职怎么收费
  • 做网站需要钱吗运营培训班学费大概多少
  • wordpress替换链接搜索引擎优化方法包括
  • 免费视频素材下载的网站网站流量排名
  • 做商城网站服务器配置怎么选择凡科建站快车
  • 大同市建设工程招标投标网站分析影响网站排名的因素