leetcode解题之148. Sort List Java版(对链表排序)_mine_song的博客-程序员秘密

技术标签: 链表排序  归并排序  java  leetcode  148. Sort List  

148. Sort List

Sort a linked list in O(n log n) time using constant space complexity.

在O(nlogn)时间内,使用常数空间对链表进行排序。使用归并排序

参考:

归并排序 原理及其java实现 

21.Merge Two Sorted Lists Java版 递归和非递归实现
23.Merge k Sorted Lists Java版本(合并k个有序的链表)

	public ListNode sortList(ListNode head) {
		if (head == null || head.next == null)
			return head;
		// 使用快慢指针查找中间结点
		ListNode fast = head;
		ListNode slow = head;
		while (fast.next != null) {
			fast = fast.next.next;
			// 让slow少走一步,结点数目均匀
			if (fast == null)
				break;
			slow = slow.next;
		}
		ListNode right = slow.next;
		// 注意断链
		slow.next = null;
		
		ListNode left = sortList(head);
		right = sortList(right);
		return mergeTwoLists(left, right);
	}
	// 递归实现链表排序
	public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
		ListNode res = null;
		if (l1 == null)
			return l2;
		if (l2 == null)
			return l1;
		if (l1.val <= l2.val) {
			res = l1;
			l1.next = mergeTwoLists(l1.next, l2);
		} else {
			res = l2;
			l2.next = mergeTwoLists(l1, l2.next);
		}
		return res;
	}


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mine_song/article/details/69831827

智能推荐

4 如何对feature map 特征 进行分类_helloxp的博客-程序员秘密

卷积神经网络系列之softmax,softmax loss和cross entropy的讲解个人分类: 深度学习版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014380165/article/details/77284921我们知道卷积神经网络(CNN)在图像领域的应用已经非常广泛了,一般一个CNN网络主要包含卷积层,池化层(po...

Jackson 框架 用例详解_a52071453的博客-程序员秘密

Jackson 框架 用例详解      目录一、         基本介绍.............................2二、         准备工作............... ............2三、         一些常用的示例............... 4    1.Object转Json............................

我的第二十二篇博客---VUE_weixin_30586085的博客-程序员秘密

Vue.js基本概念:首先通过将vue.js作为一个js库来使用,来学习vue的一些基本概念,我们下载了vue.js后,需要在页面上通过script标签引入vue.js。开发中可以使用开发版本vue.js。产品上线要换成vue.min.js。&lt;script type="text/javascript" src="../static/js/vue.js"&gt;&lt;/script&gt...

自学笔记7_pinocchio·L的博客-程序员秘密

1月19日今天我会将底盘的代码全部放到这,而且会把之前没注释的内容注释,,如果有什么问题可以私信我,很多关于keil的基础内容我都没有写,主要是过几天就是向RM官方提交中期视频的时候,等提交完毕我会系统的全部都补上昨天我写了底盘结构体和初始化函数,既然定义完毕了,那现在就开始写小车遥控器部分的代码(写代码时尽量根据功能分块写,然后最后只留一个接口,这样思维不容易混乱)还是老样子,我们先写.h...

uniapp h5端tab页有input当它获得焦点,安卓底部的导航栏被弹起的解决办法_热爱°可抵岁月漫长的博客-程序员秘密

resize() { this.clientHeight = `${document.documentElement.clientHeight}px`; window.onresize = () =&gt; { const clientHeight = `${document.documentElement.clientHeight}px`; const tarbar = document.getElementsByClassName('uni-tabbar')[0].

m1 mac Android protobuf 遇到的问题_Five_51的博客-程序员秘密

在 arm 架构的 mac 上跑 Android 项目会遇到如下报错Could not resolve all files for configuration ':libsignal-service:protobufToolsLocator_protoc'. &gt; Could not find protoc-osx-aarch_64.exe (com.google.protobuf:protoc:3.10.0).下面来解决问题在 build.gradle 文件中修改配置pr..

随便推点

[C/C++11]_[初级]_[使用正则表达式库进行分组查询]_infoworld的博客-程序员秘密

场景1.正则表达式在查询替换字符串数据时效率很高, 可以节省很多不必要的查询代码. 特别是对字符串分组的查询, 可以说如果没有正则表达式,查询分组里的字符串需要写很多额外的代码,还不一定准确.2.查询并替换XML标签是比较常见的需求, 比如过滤掉HTML标签里的标签, 提取字符串内容等.例子1.这里举例了C++正则库的分组查询功能, 一个用于提取特定字符串, 一个用于替换字符串.// test-r

xshell 远程连接本地虚拟机(比如virtualbox)_瀚宇轩辕的博客-程序员秘密

xshell安装教程https://www.jianshu.com/p/4716cc35750fxshell连接本地的虚拟机https://blog.csdn.net/qq_43213352/article/details/89004830Xshell如何修改字体大小和颜色https://jingyan.baidu.com/article/db55b609aac41e4ba30a2f86.html

cordova flie文件目录,使用Cordova FileTransfer将文件保存到公共目录_勋哥很忙的博客-程序员秘密

I need to download files on my mobile device and make them accessible for other apps (using Android and iOS).I managed to download a file to the SD card (cordova.file.externalDataDirectory), but this ...

字符串hash_二喵君的博客-程序员秘密

  这个是在学习哈希表的时候偶然带出来的,想着都是hash家的人,一起看看,结果比哈希表难好多【或许是哈希表学的不深入】; 解决问题:  字符串hash主要应用在:寻找长度为n的主串S中的匹配串T(长度为m)出现的位置或次数的问题属于字符串匹配问题。【将KMP一起看了,这种问题用KMP也可以解决啊,而且人家KMP的代码短啊,,也是不太清楚字符串hash存在的意义是啥,,】如果是从主串中每次...

浅谈Dataset类中的__getitem__和 __len__方法_dataset __len___进我的收藏吃灰吧~~的博客-程序员秘密

浅谈Dataset类中的__getitem__和 __len__方法torch.utils.data.Dataset是PyTorch中用来表示数据集的抽象类,Dataset是一个包装类,用来将数据包装为Dataset类,然后传入DataLoader中从而使DataLoader类更加快捷的对数据进行操作。当处理自定义的数据集的时候必须继承Dataset,然后重写 len()和__getitem__()函数。1)len(): 使得len(dataset)返回数据集的大小;2)getitem():使得支持d

linux系统如何启动rpcbind,rpcbind无法启动的问题【已解决】_蜜桃厨房的博客-程序员秘密

linux小白,请大神指教环境如下:[[email protected] ~]# uname -r2.6.32-504.el6.x86_64[[email protected] ~]# uname -mx86_64[[email protected] ~]# uname -aLinux nfs-server 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UT...

推荐文章

热门文章

相关标签