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

衡阳市建设学校官方网站阿里云怎么申请域名

衡阳市建设学校官方网站,阿里云怎么申请域名,网站运营与数据分析,苏州园区两学一做网站一.合并k个升序链表 1.1题目描述 1.2题解思路 解法一:小根堆 我们可以先定义一个小根堆,将k个指针的头结点如堆,每次取堆顶元素尾插到newhead中,然后再pop(),接着push堆顶原来堆顶元素的下一个节点 重点分析&#…

一.合并k个升序链表

1.1题目描述

1.2题解思路

解法一:小根堆

我们可以先定义一个小根堆,将k个指针的头结点如堆,每次取堆顶元素尾插到newhead中,然后再pop(),接着push堆顶原来堆顶元素的下一个节点

重点分析:

1.定义小根堆的时候需要传入仿函数。

2.每次入堆之前需要判断指针是否为空

3.循环结束条件为堆空

解法二:递归

用递归的思想,将k个链表分成两份,先分别合并这两份链表,再合并这两个有序的链表

1.3题解代码

解法一代码:

class Solution {
public:class cmp{public:bool operator()(ListNode * l1,ListNode *l2){return l1->val > l2->val;} };ListNode* mergeKLists(vector<ListNode*>& lists) {//定义小根堆priority_queue<ListNode *,vector<ListNode *>,cmp> heap;ListNode* newhead = new ListNode(-1);ListNode* cur = newhead;//让所有的头结点进入小根堆for(int i = 0;i < lists.size();i++){if(lists[i])heap.push(lists[i]);}//合并k个有序链表while(!heap.empty()){ListNode* tmp = heap.top();cur->next = tmp;cur = cur->next;tmp = tmp->next;heap.pop();if(tmp)heap.push(tmp);}return newhead->next;}
};

解法二代码:

class Solution {
public://将[left,right)区间的链表排序,并且返回头结点ListNode* _mergeKLists(vector<ListNode*>& lists,int left,int right){if(left > right) return nullptr;if(left == right) return lists[left];ListNode* newhead = new ListNode(-1);ListNode* cur = newhead;//[left,tmp][tmp+1,right]int tmp = (left+right)/2;ListNode* l1 = _mergeKLists(lists,left,tmp);ListNode* l2 = _mergeKLists(lists,tmp+1,right);//合并两个有序链表while(l1 && l2){if(l1->val < l2->val){cur->next = l1;l1 = l1->next;cur = cur->next;}else{cur->next = l2;l2 = l2->next;cur = cur->next;}}if(l1) cur->next = l1;if(l2) cur->next = l2;ListNode* ret = newhead->next;delete newhead;return ret;}ListNode* mergeKLists(vector<ListNode*>& lists) {return _mergeKLists(lists,0,lists.size() - 1);}
};

二.k个一组翻转链表

2.1题目描述

2.2题解思路

1.先求出需要翻转多少组 n

2.以k个为一组,翻转n次

2.3题解代码

class Solution {
public:ListNode* reverseKGroup(ListNode* head, int k) {ListNode* newhead = new ListNode(-1);//1.求出需要翻转多少次ListNode* cur = head;int size = 0;while(cur){cur = cur->next;size++;}int n  =size/k;//重复n次,以k个为一组翻转链表cur = head;ListNode* prev = newhead;ListNode* next = cur->next;while(n--){ListNode* tmp = cur;//翻转链表for(int i = 0; i <k; i++){cur->next = prev->next;prev->next = cur;cur = next;if(next) next = next->next;}prev = tmp;}//把不需要翻转的接上prev->next = cur;return newhead->next;}
};
http://www.dtcms.com/wzjs/543902.html

相关文章:

  • 网站开发和合同范本西安外贸建站
  • 长沙银狐做网站网站关键词多少个
  • 网站视频大全网站备案照
  • 主机销售网站源码wordpress微博评论箱
  • 济宁网站建设找哪家免费企业邮箱推荐
  • 网站建设模拟实训题潍坊网站建设公司推荐
  • 哪个网站做logo好佛山外贸网站制作公司
  • 泉州北京网站建设价格wordpress开启ssl强制跳转
  • 重庆网站建站推广网站后台开发教程
  • 58同城通辽做网站企业电话
  • 网站搭建需要什么技术学做电商的网站有哪些
  • 响应式网站404页面怎么做网页交互设计
  • 会员系统网站制作网络营销公司名字大全
  • 网站建设理论依据做app公司
  • 太原建网站wordpress注册用户验证
  • 高端建站属于外包公司么网站后台模板怎样使用
  • c 转网站开发建设网站情况说明范文
  • 网站建设与管期末试题搜索引擎都有哪些
  • 怎么做网站里的悬浮窗口网络空间搜索引擎
  • 网上商城网站建设解决方案辽宁省建设机械协会官方网站
  • wordpress能做什么网站上海公司网站设计
  • 产品做网站如何谁来维护价格化妆品可做的团购网站有哪些
  • 自己做的网站被攻击了网站开发细节
  • 什么网站可以做棋谱南京市互联网平台公司
  • 曲阳网站制作公司电子政务 和网站建设总结
  • 网站上如何做问卷调查网站推广软件下拉管家
  • 专业北京网站建设公司排名简单个人博客模板网站
  • 免费建简单网站北京南站在哪个区哪个街道
  • dedecms网站地图路径修改生成后 网站地图前台路径不变海南七星彩网站开发
  • 策划公司网站设计免费中文wordpress主题下载地址