148. 排序链表

148. 排序链表

给你链表的头结点 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 = []
输出:[]

提示:

链表中节点的数目在范围 [0, 5 * 104] 内
-105 <= Node.val <= 105

进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?

代码

/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func sortList(head *ListNode) *ListNode {if head == nil || head.Next == nil {return head}fast, slow := head, headvar pre *ListNodefor fast != nil && fast.Next != nil {pre = slowfast = fast.Next.Nextslow = slow.Next}pre.Next = nil// 这里是个坑 head 和 slowl := sortList(head)r := sortList(slow)return mergeTwoLists(l, r)
}func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {if list1 == nil {return list2}if list2 == nil {return list1}if list1.Val > list2.Val {list2.Next = mergeTwoLists(list1, list2.Next)return list2} else {list1.Next = mergeTwoLists(list1.Next, list2)return list1}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HDU 1874 畅通工程续 (Dijkstra , Floyd , SPFA, Bellman_Ford 四种算法)

畅通工程续 题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1874 Problem Description 某省自从实行了很多年的畅通工程计划后&#xff0c;终于修建了很多路。不过路多了也不好&#xff0c;每次要从一个城镇到另一个城镇时&#xff0c;都有许多种道路方案可以…

vim如何自动补全,ycm配置

vimplus已经很完善了&#xff0c;现在安装已经很容易了。 git clone https://github.com/chxuan/vimplus.git ~/.vimplus cd ~/.vimplus ./install.sh Ubuntu配置vim 更新2018年11月8号 用了一段时间的Ubuntu 18简直太方便了。 三步操作全部配完&#xff01;&#xff01;&a…

Cake -- ACM解决方法

一次生日Party可能有p人或者q人参加,现准备有一个大蛋糕.问最少要将蛋糕切成多少块(每块大小不一定相等),才能使p人或者q人出席的任何一种情况,都能平均将蛋糕分食. Input 每行有两个数p和q. Output 输出最少要将蛋糕切成多少块. Sample Input 2 3 Sample Output 4 …

【转载】ACM中矩阵乘法的应用

copied from 大神s blog 不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。在数学中&#xff0c;一个矩阵说穿了就是一个二维数组。一个n行m列的矩阵可以乘以一个m行p列的矩阵&#xff0c;得到的结果是一个n行p列的矩阵&#xff0c;其中的第i行第j列位置上的数等于前一…

线程控制(一)

1. 线程执行顺序问题 #include <stdio.h> #include <string.h> #include <pthread.h> #include <stdlib.h> #include <unistd.h>void *thread1(void *); void *thread2(void *);pthread_key_t key;void *thread1(void *arg){int a 1, *tsd &a…

C++学习笔记(一)

本文主要内容为C下的输入输出函数以及for循环中的C11新特性。 一、输入输出函数 1. cin cin 遇到 空格、回车、Tab结束输入&#xff0c; 且会将读到的空格、回车、Tab 丢弃&#xff0c;例&#xff1a; #include<iostream> using namespace std;int main(void) {char a…

关于Github的那点事儿

今天突然发现无法从本地git push到远程仓库了&#xff08;然而事实是网有点卡&#xff0c;github官网没更新过来&#xff0c;然而……ssh-key已经删了….&#xff09;&#xff0c;所以又重新添加ssh-key。 ssh-keygen -t rsa cat ~/.ssh/id_rsa.pub 将显示的内容粘贴到github…

Rabbits —— HDU-6227

题意&#xff1a; 有n只兔子在不同的位置&#xff0c;任意一只兔子可以跳到其余任两只兔子&#xff08;必须保证它们中间有空位&#xff09;中间&#xff0c;问最多可移动多少次&#xff1f; 思路&#xff1a; 可看作从任一侧的兔子向中间插空&#xff0c;因此可以将所有兔子…

【世界上最美丽的7张太阳照片】

【世界上最美丽的&#xff17;张太阳照片】 文章来源:http://ms.blogger.cn/peon/posts/1634.aspx转载于:https://www.cnblogs.com/paulzhu/archive/2004/02/24/1572.html

GARFIELD@12-30-2004

tele-murderer 转载于:https://www.cnblogs.com/rexhost/archive/2004/12/30/84230.html

[Qt] 解决toggled无法触发setVisible

解决toggled无法触发setVisible 解决方法&#xff1a; 在QT Designer中&#xff0c;创建QPushButton时需要将按钮修改为checkable。在默认情况下&#xff0c;checkable是不选中的&#xff0c;默认为触发按钮&#xff08;trigger button&#xff09;&#xff0c;也就是按下之后…

来几个FUNNY PICS,让大家笑一笑!

点解蜡笔小新成日都可以甘猥琐&#xff5e;转载于:https://www.cnblogs.com/hdclub/archive/2005/04/26/145761.html

Together与Visual.Studio.NET的结合使用(三)

通用选项&#xff1a; 图二十九&#xff1a;通用选项 Delete confirmation&#xff1a;此选项定义当你删除一个元素的时候是否需要进行确认。 Automatically enable Together VS.NET support for opened projects&#xff1a;当打开一个已存在的项目时&#xff0c;是…

c++ STL 全排列

在c的STL中有函数可以直接对数组元素进行全排列&#xff0c;即next_permutation和pre_permutation&#xff0c;这两个函数都可以实现全排列&#xff0c;只是排列的顺序不同&#xff0c;next_permutation作用为向后排序&#xff0c;而pre_permutation作用为向前排序。 需要头文…

创建下标为1-10的整形数组

创建下标为1-10的整形数组 Array intArr Array.CreateInstance(typeof(int), newint[]{10}, newint[]{1}); posted on 2005-05-11 16:32 K3 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/sskset/archive/2005/05/11/153238.html

【操作系统】页面置换算法

页面置换算法 在进程运行过程中&#xff0c;若需要访问的物理块不在内存中&#xff0c;就需要通过一定的方式来将页面载入内存&#xff0c;而此时内存很可能已无空闲空间&#xff0c;因此就需要一定的算法来选择内存中要被置换的页面&#xff0c;这种算法就被称为页面置换算法。…

ubuntu18.04安装、配置dosbox

1 安装dosbox&#xff1a;打开终端&#xff0c;输入&#xff1a; sudo apt install dosbox 2 安装完成后&#xff0c;启动dosbox&#xff0c;在终端输入&#xff1a; dosbox 3 设置自动挂载 退出dosbox&#xff0c;在终端中输入&#xff1a; vim .dosbox/dosbox-0.74.con…

关于 SENDKEYS 的代码

sendkeys 的用法&#xff08;MSDN&#xff09;&#xff1a; SendKeys 语句 将一个或多个按键消息发送到活动窗口&#xff0c;就如同在键盘上进行输入一样。 语法 SendKeys string[, wait] SendKeys 语句的语法具有以下几个命名参数&#xff1a; 部分描述string必需的。字符串表…

【计算机网络】TCP IP通信处理过程

1.数据包首部 每个分层中都会对所发送的数据附加一个首部&#xff0c;其中包含了该层必要的信息&#xff0c;如发送端地址、接收端地址以及协议等相关信息。 2.发送数据包 1&#xff09;应用程序处理 进行编码处理&#xff08;相当于表示层功能&#xff09;&#xff0c;管…

【计算机网络】数据链路相关技术

1.MAC地址 MAC地址长48字节。在使用网卡的情况下&#xff0c;一般会将MAC地址烧入到ROM中&#xff0c;任何一个网卡的MAC地址都是唯一的。例如 00:10:5A:70:33:61 MAC地址的3~24位表示厂商识别码&#xff0c;每个NIC厂商都有特定唯一的识别数字。25~48位是厂商内部为识别每个…