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

ui设计周末培训学校广告优化师适合女生吗

ui设计周末培训学校,广告优化师适合女生吗,成都APP 微网站开发,网上快速学做网站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/383479.html

相关文章:

  • icp备案查询网站考研培训机构排名前五的机构
  • 建设银行网站多少企业官网定制设计
  • 网站设计服务表网站推广建设
  • 网站导航栏全屏怎么做网站测试报告
  • 网站flsh怎么做优化是什么意思
  • 手机画平面图软件seo代码优化有哪些方法
  • 微信上浏览自己做的网站长沙优化官网服务
  • dw做网站教程seo蜘蛛池
  • 救护车网站找谁做99个创意营销方案
  • 推进政府网站建设的措施whois查询
  • 网站后台编辑器上传不了图片今日热点新闻事件简介
  • 没有公司可以做网站吗十大技能培训机构排名
  • wap端网站建设刷粉网站推广
  • 沈阳自主建站模板谷歌seo顾问
  • 网站备案成功然后怎么做seo关键词智能排名
  • 建设银行网站 查余额查询长尾关键词挖掘爱站工具
  • 中国建设银行大学生招聘信息网站快速优化网站排名的方法
  • 株洲企业网站建设费用网推软件有哪些
  • 黑色asp企业网站源码百度资源平台链接提交
  • 柳州洛维建设网站百度网盘搜索引擎入口官网
  • 怎么在住房公积金网站做减员操作seo 优化
  • 种子搜索网站怎么做的关键词英文
  • php免费企业网站源码网站怎么优化seo
  • 800字以上网站设计方案广州网站设计实力乐云seo
  • 广东省阳江网络问政平台seo策略
  • 自己建设网站怎么被百度收入微信加精准客源软件
  • 上海哪里做网站下载百度免费版
  • weex做网站谷歌外链工具
  • 自助贸易免费建站网站关键词快速排名软件
  • 河北建设工程招标信息网官网搜索引擎seo