leecode第一百四十八题(排序链表)
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第一百四十八题(排序链表)相关推荐
- 前端歌谣的刷题之路-第一百四十五题-双列布局-flex
前言 我是歌谣 我有个兄弟 巅峰的时候排名c站总榜19 叫前端小歌谣 曾经我花了三年的时间创作了他 现在我要用五年的时间超越他 今天又是接近兄弟的一天人生难免坎坷 大不了从头再来 歌谣的意志是永恒的 ...
- 主攻文推荐攻守都有系统_第一百四十八章:攻守之间 - 足球神话 - 找小说网
第一百四十八章:攻守之间 文子华是那种理智型的球员,知道见好就收. 他见到曲振已将足球传出并没有去拦截得球的陈侯东,而是左移到了曲振的身侧继续盯人防守. 当然,得球的陈侯东也好不到哪里去,这时在他 ...
- 第五章第三十八题(十进制转换八进制)(Decimal to octal)
第五章第三十八题(十进制转换八进制)(Decimal to octal) **5.38(十进制转换为八进制)编写程序,提示用户输入一个十进制整数,然后显示对应的八进制值.在这个程序中不要使用Java的 ...
- 【JavaScript 逆向】猿人学 web 第十八题:jsvmp,洞察先机
案例目标 网址:第十八题 jsvmp 洞察先机 - 猿人学 本题目标:抓取 5 页数字,计算加和并提交结果 常规 JavaScript 逆向思路 一般情况下,JavaScript 逆向分为三步: 寻找 ...
- 第一卷清晨的帝国 第一百四十二章 登场
第一卷清晨的帝国 第一百四十二章 登场 清幽的宅院内一片安静,李渔直视燕大子的双眼,过了很长时间后才轻轻启唇,缓声说道:"外无强援不能成事.隆庆有西陵神殿在后方隐而不发,若崇明哥哥你愿意,相 ...
- 《剑指offer》第十八题(在O(1)时间删除链表结点)
// 面试题18(一):在O(1)时间删除链表结点 // 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该 // 结点. #include <iostream> ...
- leetcode算法题--排序链表★
原题链接:https://leetcode-cn.com/problems/sort-list/ 1.归并排序(递归版) ListNode* sortList(ListNode* head) {if( ...
- 牛客网(剑指offer) 第二十五题 复杂链表的复制
//题目描述 //输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点 ...
- 【leetcode 简单】 第三十五题 环形链表
给定一个链表,判断链表中是否有环. 进阶: 你能否不使用额外空间解决此题? /*** Definition for singly-linked list.* struct ListNode {* in ...
最新文章
- [转]HTTP协议详解
- 伪元素的margin值挤压主体元素解决
- CTFshow 反序列化 web255
- 成功解决getaddrinfo:请求的名称有效,但是找不到请求的类型的数据。(11004
- CSS样式让一个块在最上层中显示
- python 自动化办公 uibot_使用 Python 扩展丰富 UiBot 的功能及在 UiBot 中引用 Python 模块...
- 合理设置apache的连接数及进程工作方式
- 使用 store 来优化 React 组件
- wangeditor 请求头_跨域上传 · wangEditor2使用手册 · 看云
- [Excel]VBA编程入门基础知识
- 怎么把sql文件导入MySQL数据库中_《sql基础教程》书里的sql文件如何导入数据库?...
- FastAPI基础:Depends怎么用?
- java使用wordnet获取近义词
- 关于CAN总线的布线
- mac 软件卸载后无法安装
- 重磅!iPhone 13 型号曝光
- 最实用的自用同花顺主力资金暴发进出公式
- 前端原生下载excel表格
- 滴滴为什么选择与章鱼哥APP合作?
- maven assembly打包zip报错 You must set at least one file.
热门文章
- 常见的排序算法(1)
- ps抠头发插件_PS顶级抠图插件Topaz Mask AI 1.0.2!支持2020Win/Mac,转发领取
- 出租(标记+格式输出)
- php 多文件上传控件,php 动态多文件上传
- 独家解读 etcd 3.4版本 |云原生生态周报 Vol. 18
- 云原生生态周报 Vol. 16 | CNCF 归档 rkt,容器运行时“上古”之战老兵凋零
- Charles的断点调试(APP)
- idea springboot 发布webservice 发布服务_太赞了:Spring boot+redis实现消息发布与订阅...
- python2连接mysql_mysql-2:python操作mysql
- java stream 多个filter_恕我直言你可能真的不会java第3篇:Stream的Filter与谓词逻辑...