class Solution {public:void sort_list(ListNode* head1, ListNode* head2,int len)//在原链表上进行排序
      {ListNode* cur_node1 = head1;ListNode* cur_node2 = head1;while (cur_node2->next != head2)cur_node2 = cur_node2->next;if (cur_node1->val > cur_node2->next->val)//必须先让cur_node1->val小于head2-》val
          {int temp = cur_node1->val;cur_node1->val = cur_node2->next->val;cur_node2->next->val = temp;}while (len > 0){while (cur_node1!= cur_node2->next && cur_node1->next->val < cur_node2->next->val)cur_node1 = cur_node1->next;if (cur_node1 == cur_node2->next)//说明head2的链表都小于head1return;else if(cur_node1 == cur_node2)//说明cur_node2->next后面没有统计,但是前面的都满足了
              {cur_node2 = cur_node2->next;len--;}else//要交换了
              {ListNode* temp = cur_node2->next;cur_node2->next = cur_node2->next->next;temp->next = cur_node1->next;cur_node1->next = temp;len--;}}}ListNode* sort_List(ListNode* head, int len)//归并排序
      {if (len == 0)return NULL;if (len == 1)return head;ListNode* mid_node = head;for (int i = len / 2; i > 0; i--)mid_node = mid_node->next;ListNode* left = sort_List(head, len / 2);ListNode* right;if (len & 1 == 1){right = sort_List(mid_node, len / 2 + 1);sort_list(left, right, len / 2 + 1);}else{right = sort_List(mid_node, len / 2);sort_list(left, right, len / 2 );}return left;}ListNode* sortList(ListNode* head) {//初试输入int len = 0;ListNode* cur_node = head;while (cur_node != NULL){len++;cur_node = cur_node->next;}ListNode* res = sort_List(head, len);return res;}};

分析:

为了满足时间复杂度,想到归并排序,为了满足空间复杂度,想到在原链表上进行排序。

但是在原链表上进行排序碰到问题有点多,尤其是不知道怎么判断终止条件和什么时候交换。

睡了一觉就想出来了。

时间击败63%,空间击败72%,室友说会不会是一晚上换了案例。。。。

说实话我还有点懵懂。

转载于:https://www.cnblogs.com/CJT-blog/p/10715147.html

leecode第一百四十八题(排序链表)相关推荐

  1. 前端歌谣的刷题之路-第一百四十五题-双列布局-flex

    前言 我是歌谣 我有个兄弟 巅峰的时候排名c站总榜19 叫前端小歌谣 曾经我花了三年的时间创作了他 现在我要用五年的时间超越他 今天又是接近兄弟的一天人生难免坎坷 大不了从头再来 歌谣的意志是永恒的 ...

  2. 主攻文推荐攻守都有系统_第一百四十八章:攻守之间 - 足球神话 - 找小说网

     第一百四十八章:攻守之间 文子华是那种理智型的球员,知道见好就收. 他见到曲振已将足球传出并没有去拦截得球的陈侯东,而是左移到了曲振的身侧继续盯人防守. 当然,得球的陈侯东也好不到哪里去,这时在他 ...

  3. 第五章第三十八题(十进制转换八进制)(Decimal to octal)

    第五章第三十八题(十进制转换八进制)(Decimal to octal) **5.38(十进制转换为八进制)编写程序,提示用户输入一个十进制整数,然后显示对应的八进制值.在这个程序中不要使用Java的 ...

  4. 【JavaScript 逆向】猿人学 web 第十八题:jsvmp,洞察先机

    案例目标 网址:第十八题 jsvmp 洞察先机 - 猿人学 本题目标:抓取 5 页数字,计算加和并提交结果 常规 JavaScript 逆向思路 一般情况下,JavaScript 逆向分为三步: 寻找 ...

  5. 第一卷清晨的帝国 第一百四十二章 登场

    第一卷清晨的帝国 第一百四十二章 登场 清幽的宅院内一片安静,李渔直视燕大子的双眼,过了很长时间后才轻轻启唇,缓声说道:"外无强援不能成事.隆庆有西陵神殿在后方隐而不发,若崇明哥哥你愿意,相 ...

  6. 《剑指offer》第十八题(在O(1)时间删除链表结点)

    // 面试题18(一):在O(1)时间删除链表结点 // 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该 // 结点. #include <iostream> ...

  7. leetcode算法题--排序链表★

    原题链接:https://leetcode-cn.com/problems/sort-list/ 1.归并排序(递归版) ListNode* sortList(ListNode* head) {if( ...

  8. 牛客网(剑指offer) 第二十五题 复杂链表的复制

    //题目描述 //输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点 ...

  9. 【leetcode 简单】 第三十五题 环形链表

    给定一个链表,判断链表中是否有环. 进阶: 你能否不使用额外空间解决此题? /*** Definition for singly-linked list.* struct ListNode {* in ...

最新文章

  1. [转]HTTP协议详解
  2. 伪元素的margin值挤压主体元素解决
  3. CTFshow 反序列化 web255
  4. 成功解决getaddrinfo:请求的名称有效,但是找不到请求的类型的数据。(11004
  5. CSS样式让一个块在最上层中显示
  6. python 自动化办公 uibot_使用 Python 扩展丰富 UiBot 的功能及在 UiBot 中引用 Python 模块...
  7. 合理设置apache的连接数及进程工作方式
  8. 使用 store 来优化 React 组件
  9. wangeditor 请求头_跨域上传 · wangEditor2使用手册 · 看云
  10. [Excel]VBA编程入门基础知识
  11. 怎么把sql文件导入MySQL数据库中_《sql基础教程》书里的sql文件如何导入数据库?...
  12. FastAPI基础:Depends怎么用?
  13. java使用wordnet获取近义词
  14. 关于CAN总线的布线
  15. mac 软件卸载后无法安装
  16. 重磅!iPhone 13 型号曝光
  17. 最实用的自用同花顺主力资金暴发进出公式
  18. 前端原生下载excel表格
  19. 滴滴为什么选择与章鱼哥APP合作?
  20. maven assembly打包zip报错 You must set at least one file.

热门文章

  1. 常见的排序算法(1)
  2. ps抠头发插件_PS顶级抠图插件Topaz Mask AI 1.0.2!支持2020Win/Mac,转发领取
  3. 出租(标记+格式输出)
  4. php 多文件上传控件,php 动态多文件上传
  5. 独家解读 etcd 3.4版本 |云原生生态周报 Vol. 18
  6. 云原生生态周报 Vol. 16 | CNCF 归档 rkt,容器运行时“上古”之战老兵凋零
  7. Charles的断点调试(APP)
  8. idea springboot 发布webservice 发布服务_太赞了:Spring boot+redis实现消息发布与订阅...
  9. python2连接mysql_mysql-2:python操作mysql
  10. java stream 多个filter_恕我直言你可能真的不会java第3篇:Stream的Filter与谓词逻辑...