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

杭州桐庐网站建设中企动力地址

杭州桐庐网站建设,中企动力地址,编程软件是怎么做出来的,帝国做的网站怎么上传图片一.题目要求 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 二.题目难度 中等 三.输入样例 示例 1: 输入:head [4,2,1,3] 输出:[1,2,3,4] 示例 2: 输入:head [-1,5,3,4,0] 输…

一.题目要求

给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。

二.题目难度

中等

三.输入样例

示例 1:
在这里插入图片描述
输入:head = [4,2,1,3]
输出:[1,2,3,4]

示例 2:
在这里插入图片描述
输入:head = [-1,5,3,4,0]
输出:[-1,0,3,4,5]

示例 3:
输入:head = []
输出:[]

四.解题思路

解法1:用map按值大小存结点
解法2:归并排序(GPT)

五.代码实现

解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* sortList(ListNode* head) {ListNode* dummy = new ListNode(0);map<int,vector<ListNode*>> nodeMap;while(head){nodeMap[head->val].push_back(head);head = head->next;}ListNode* p = dummy;for(auto node : nodeMap){for(vector<ListNode*>::iterator it = node.second.begin(); it != node.second.end(); it++){(*it)->next = nullptr;p->next = *it;p = p->next;}}return dummy->next;}
};

解2

class Solution {
public:ListNode* sortList(ListNode* head) {if (!head || !head->next) return head;ListNode* mid = getMid(head);ListNode* left = sortList(head);ListNode* right = sortList(mid);return merge(left, right);}private:ListNode* getMid(ListNode* head) {ListNode* midPrev = nullptr;while (head && head->next) {midPrev = (midPrev == nullptr) ? head : midPrev->next;head = head->next->next;}ListNode* mid = midPrev->next;midPrev->next = nullptr; // 断开链表return mid;}ListNode* merge(ListNode* list1, ListNode* list2) {ListNode dummy(0);ListNode* ptr = &dummy;while (list1 && list2) {if (list1->val < list2->val) {ptr->next = list1;list1 = list1->next;} else {ptr->next = list2;list2 = list2->next;}ptr = ptr->next;}ptr->next = (list1) ? list1 : list2;return dummy.next;}
};

六.题目总结

归并排序在链表排序中非常有效,因为它可以利用链表的节点指针操作,无需像数组那样进行大量的元素交换,其时间复杂度是 O ( n l o g n ) O(nlogn) O(nlogn),但通常比基于 std::map 的方法更快,因为它具有更好的常数因子和较低的内存使用。

递归分析:

在这里插入代码片
http://www.dtcms.com/wzjs/561302.html

相关文章:

  • 纯flash网站价格重庆互联网公司招聘信息
  • 四川住房和建设厅网站做网站的费用如何写分录
  • 合肥红酒网站建设如何管理wordpress网站模板
  • 深圳集团网站建设公司分销系统软件
  • 自己建网站流程要学什么免费网站建设力荐 186一6159一6345绘政正规
  • 制作网站需要哪些工作手机 网站开发软件有哪些
  • 广州站八个字凡科网 免费网站
  • 网站设计描述免费个人网站平台
  • 简述电子商务网站开发过程广州pc网站建设
  • 网站建设综合做任务免费领取东西的网站
  • wordpress网站维护成都网页设计
  • 网站安全狗服务名做神马网站优化快速
  • 企业网站添加图片天翼云免费服务器
  • 中国建设银行官网首页 网站聊城app制作网站
  • 宜春网站设计公司wordpress主题Qinmei
  • 江西锐安建设工程有限公司网站wordpress添加注册页面
  • 泰州住房和城乡建设网站网站需求表格
  • 建设网站需要花钱吗长春建站方案
  • 有没有好网站推荐wordpress oracle
  • 网站没备案怎么做淘宝客电商网站制作
  • 做网站的费用计入哪个科目福田蒙派克9座商务车报价及图片
  • wordpress网站建设网页设计模板网站
  • 织梦配置手机网站学校网站建设与管理办法
  • 互联网网站开发服务合同范本交换免费连接
  • 高校网站群建设的公司有哪些用什么开源框架做网站
  • 网站建设 设计那种连接线厂家dede做网站地图
  • 网站开发公司组织架构百度收录排名查询
  • 北京网站建设找降龙wordpress怎么安装上服务器
  • 建站之星管理中心新手搭建做网站
  • 北京网站优化推广公司二手商品网站怎么做