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

汕头市公司网站建设多少钱长春求推荐好的网站优化推广

汕头市公司网站建设多少钱,长春求推荐好的网站优化推广,企业网址怎么做,男科医院在线咨询预约这道题我是用最淳朴最简单的思路去做的,用一个while循环持续地将当前遍历到的最小值加入到合并链表中,while循环中使用一个for循环遍历整个指针数组,将其中的最小值和对应下标记录下来,并将其值加入到合并链表中,同时对…


这道题我是用最淳朴最简单的思路去做的,用一个while循环持续地将当前遍历到的最小值加入到合并链表中,while循环中使用一个for循环遍历整个指针数组,将其中的最小值和对应下标记录下来,并将其值加入到合并链表中,同时对应的那条链表的指针后移一位。这里我们需要用到一个额外的辅助变量flag,在每一次执行for循环之前需要初始化为false,默认为所有链表都已经遍历到末尾,在for循环中,如果遇到了还没遍历到末尾的链表,则flag会被更新为true,该标志位的作用就是用来标记所有链表是否遍历结束,如果遍历结束就直接跳出外层的while循环。

/*** 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) {ListNode* result = new ListNode();ListNode* temp = result;bool flag = lists.size() == 0 ? false : true;while(flag){int min_value = INT_MAX;int min_index = INT_MAX;flag = false;for(int i = 0; i < lists.size(); ++i){if(!lists[i]){    //若当前遍历到的链表已经遍历到末尾,则直接跳过当前链表flag = false || flag;continue;   } flag = true;  //尚有链表没有遍历结束if(lists[i] -> val < min_value){min_value = lists[i] -> val;  //更新当前节点的最小值min_index = i;   //更新最小值的下标}}if(flag){temp -> next = new ListNode(min_value);cout << min_value << endl;temp = temp -> next;lists[min_index] = lists[min_index] -> next;}}return result -> next;}
};

但是这么做的耗时有点太长了,AC之后去看了下灵神的题解,感觉他的第一种思路特别通俗易懂,主要是借用了数据结构本身的特性,利用优先队列进行自动排序,而无需手动排序,因此我们只需要不断地将节点加入到优先队列中即可,这道题需要我们自定义一个排序规则,以对链表节点进行排序,当我们把优先队列的队头元素(队列内的最小值)取出后,我们需要判断队头元素的下一个节点是否为空,若不为空才将下一个节点加入到优先队列中。当所有链表的所有节点都被加入到优先队列中后,我们直接退出循环。

/*** 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) {ListNode* result = new ListNode();ListNode* temp = result;// 使用Lambda表达式定义比较规则auto compare = [] (const ListNode* a, const ListNode* b) {return a -> val > b -> val;    //较小的优先级较高};priority_queue<ListNode*, vector<ListNode*>, decltype(compare)> q;   //优先队列,存储值较小的排前面for(auto head : lists){if(head) q.push(head);  //将所有的非空链表头节点入队}while(!q.empty()){temp -> next = new ListNode(q.top() -> val);cout << q.top() -> val << endl;if(q.top() -> next)  //下个节点不为空才入队q.push(q.top() -> next);q.pop();temp = temp -> next;}return result -> next;}
};
http://www.dtcms.com/a/472903.html

相关文章:

  • 温州企业建站系统电脑办公软件培训班
  • 美容 网站源码建造师培训网校
  • 关于色彩搭配的网站建筑工程网络图分为
  • 设计师配色网站wordpress用户反馈
  • 比特币做游戏币的网站wordpress设置固定连接
  • 电子商务网站建设感想无锡市建设银行总行网站
  • 奉贤区专业建网站万能搜索引擎
  • 网站建设与维护难不难公司注册名称怎么起
  • 企业网站建设设计检测网站是否正常
  • wordpress网站怎样咨询管理
  • 六安人论坛seo网站诊断流程
  • 网站备案营业执照唐山网站建设技术外包
  • 网站建设的优势西安网站网站建设
  • 定制制作网站公司soho建设外贸网站
  • 做网站开发 用什么网站建设如何上传文件
  • 永嘉县住房和城乡规划建设局网站网站建设百度文库
  • 做设计的需要网站下载素材吗一站式服务就像一个什么
  • 手机网站申请网页制作软件绿色版
  • aspcms是网站什么漏洞一般网站图标是用什么做的
  • 网站页面排版wordpress中文别名分类目录
  • 青岛注册公司网站wordpress首页添加模块
  • 对网站建设公司说上海建筑设计公司平台
  • 假视频网站源码出售无锡 网站建设
  • 东莞防疫最新公告广州seo培训
  • 微信公众号配置 网站建设南沙seo培训
  • 用软件建网站网站微信认证费用多少钱
  • 做折扣的网站版纳网站建设
  • 如何做能切换语言的网站软件设计师通过率
  • 适配网站建设模版江门网站制作方案
  • 怎样加盟网站建设汉阳网站推广