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

用个人的信息备案网站唐山诚达建设集团网站

用个人的信息备案网站,唐山诚达建设集团网站,互动平台领手机,在线生成网站地图题目 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 输入:head [4,2,1,3] 输出:[1,2,3,4] 输入:head [-1,5,3,4,0] 输出:[-1,0,3,4,5] 输入:head [] 输出:[] 思路…

题目

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

示例

在这里插入图片描述

输入:head = [4,2,1,3]
输出:[1,2,3,4]

在这里插入图片描述

输入:head = [-1,5,3,4,0]
输出:[-1,0,3,4,5]

输入:head = []
输出:[]

思路

对于链表排序我们可以使用链表的归并排序(Merge Sort)算法。下面是整体的思路:

  1. 归并排序的核心思想:归并排序是一种分治算法,首先将待排序的链表分成两部分,然后分别对这两部分进行排序,最后将排好序的两部分链表合并起来。

  2. mergeSort 函数:这个函数是归并排序的入口,负责调用递归排序的函数 mergeSort,并返回排好序的链表。在 mergeSort 中,首先判断链表是否为空或只有一个节点,如果是,则直接返回原链表。然后找到链表的中间节点 mid,将链表分成左右两部分,分别以 head 和 mid->next 开始。然后分别对左右两部分链表调用 mergeSort 递归排序,最终通过 merge 函数将排好序的两部分链表合并。

  3. findMid 函数:这个函数用快慢指针的方法找到链表的中间节点,快指针每次移动两步,慢指针每次移动一步,当快指针到达链表末尾时,慢指针指向的节点即为中间节点。

  4. merge 函数:这个函数用于合并两个有序链表。创建一个虚拟头节点 dummyHead 和一个指针 cur,遍历两个链表的节点,根据节点值的大小依次连接到 cur->next 上,然后将 cur 移动到下一个节点。最后,将剩余未遍历完的链表连接到 cur->next 上。返回虚拟头节点的下一个节点即为合并后的有序链表。

综上所述,这段代码通过归并排序算法对链表进行排序,利用分治和合并的思想,最终得到一个按升序排列的链表。

Code

class Solution {
public:ListNode* sortList(ListNode* head) {return mergeSort(head);}ListNode* mergeSort(ListNode* head) {if (!head || !head->next) return head;ListNode* mid = findMid(head);ListNode* l1 = head;ListNode* l2 = mid->next;mid->next = nullptr;l1 = mergeSort(l1);l2 = mergeSort(l2);return merge(l1, l2);}ListNode* findMid(ListNode* head) {ListNode *slow = head, *fast = head;while (fast->next && fast->next->next) {slow = slow->next;fast = fast->next->next;}return slow;}ListNode* merge(ListNode* l1, ListNode* l2) {// l1 >= l2长度ListNode* dummyHead = new ListNode();ListNode* cur = dummyHead;while (l1 && l2) {if (l1->val <= l2->val) {cur->next = l1;l1 = l1->next;}else {cur->next = l2;l2 = l2->next;}cur = cur->next;}cur->next = l1 ? l1 : l2;return dummyHead->next;}
};
http://www.yayakq.cn/news/228032/

相关文章:

  • 吉林企业建站系统费用长沙建筑模板厂家
  • 工信部网站备案批准文件汕头h5建站模板
  • 网站域名过期了怎么办网页美工设计(第2版)
  • 龙岩新闻龙岩kk网社区seo教程技术优化搜索引擎
  • 做网站欢迎页什么意思数据库网站开发价格
  • 建营销型网站网站建设合优
  • 网站开发毕业设计郑州网站改版升级
  • 做一个门户网站要多少钱宝山php网站开发培训
  • 枣阳建设局网站首页wordpress过期文章
  • 网站贴子推广怎么做营销型网站有哪些建设流程
  • 江苏盐城网站建设wordpress替换默认的编辑器
  • 建网站需要怎样做全国购网站建设
  • seo建站营销WordPress集成tipask
  • 做网站必须在工信部备案吗a0000网站建设
  • 做哪种网站流量大中小企业网站设计总结
  • 网站怎么申请怎么注册网站优化要怎么做才会做到最佳
  • 苏州设计网站wordpress登录后才能下载文件
  • 企业网站打不开了app网站建设哪家好
  • 网站子页面怎么做的工程咨询公司加盟合作
  • 信誉好的手机网站建设wordpress链接自动加斜杠
  • 浅谈学校网站建设优化公司内部流程
  • wordpress建站两秒打开西安公司招聘
  • 湖南网站建设公司 在线磐石网络建设银行app下载
  • 企业网站推广的形式有哪些长沙网站排名报价
  • 哈尔滨网站建设云聚达erp系统怎么自学
  • 国家高新技术企业认定标准六六seo基础运营第三讲
  • 网站建设运行环境零基础网页制作培训
  • 百度网站的建设网站备案起名要求
  • 帮人做网站要怎么赚钱各大网络平台的推广内容和方法
  • 用flask做网站前端是做网站吗