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

大连网站建设 选领超科技宝安网站建设哪家好

大连网站建设 选领超科技,宝安网站建设哪家好,做门户网站建设多少钱,中国500强公司排名名单一.题目要求 给你链表的头结点 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/581271.html

相关文章:

  • 外贸网站制作哪家好全国知名网站排名
  • 信誉好的昆明网站建设软件设计师教程
  • 淘客宝网站备案号如何弄晋中网站建设哪家强
  • 有什么网站可以做代理的在线培训网站怎么做
  • 郴州网站建设哪家做的好建立网站定制
  • 海丰网站建设c 鲜花店网站建设
  • 济南网站建设公怎么创造游戏软件
  • 宁夏建设厅网站查证平台网站模板 优帮云
  • 网站服务器速度wordpress 第三方登录插件
  • 杭州做网站的公司有哪些国外优秀网页设计作品
  • 青岛哪里可以建网站wordpress图片云储存
  • 网站建设服务费应计入什么科目学做蛋糕网站
  • 永久免费建网站网片加工机器
  • 云南网站设计外包wordpress前台弹窗
  • 企业建设网站的目的网站开发 招标采购参数
  • 用织梦做网站费用温州网站建设对比
  • 深圳做高端网站建设公司制作手机软件
  • 厦门市网站建设app开发利用淘宝视频服务做视频网站
  • 怎么做网站上的模拟动画网站程序模块
  • 创造网站需要多少钱装饰设计有限公司经营范围
  • 自己怎样开网站seo是什么意思网络用语
  • 哈尔滨建设局网站首页合肥网站建设之4个细节要注意事项
  • 建站公司合肥做网站的时候表格怎么去掉
  • 蓝色企业网站模板没备案能做网站吗
  • 济宁有做企业网站吗网站开发html
  • 怎么样可以设计网站苏州建设培训中心
  • 免费的自学网站大全烟台主流网站
  • 网站制作 系统定制全国建设工程造价管理系统
  • 网站开发的对联网站开发的现状及研究意义
  • 免费的外贸网站推广方法如何让百度收录自己信息