博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编程题—leetcode:148. 排序链表
阅读量:2441 次
发布时间:2019-05-10

本文共 2465 字,大约阅读时间需要 8 分钟。

题目描述
在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sort-list著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路

1、使用归并排序进行解决

2、首先进行分组,归并的区间按照1,2,4,8,16逐渐递增
3、然后找到要归并的链表头p和q进行归并
4、start的意思就是链表的开头
5、l用来表示每次归并完的链表头
6、flag表示在一次合并中下一次起始的节点

通过代码
class Solution {
public ListNode sortList(ListNode head) {
if (head==null) return null; ListNode k=head; int num=0; while(k!=null){
num++; k=k.next; } ListNode start =new ListNode(0); start.next=head; ListNode flag=head; ListNode l=start; for(int base=1;num>base;base*=2){
head=l.next; start= new ListNode(0); l=start; ListNode p=head; flag=head; int pause=0; while (flag!=null){
pause=0; p=flag; int count=base; ListNode q=p; while(count--!=0){
q=q.next; if (q==null){
pause=1; break; } } if (pause==1){
break; } int count1=base; flag=q; while(count1--!=0&&flag!=null){
flag=flag.next; } //比较的起点p和q已经找到 int c1=base,c2=base; //归并链表 for(;(c1!=0)&&(c2!=0)&&(p!=null)&&(q!=null);){
if (p.val>q.val){
start.next=q; q=q.next; c2--; }else{
start.next=p; p=p.next; c1--; } start=start.next; } //如果p链表还没合并完 while (c1!=0&&p!=null){
start.next=p; p=p.next; start=start.next; c1--; } //如果q链表还没合并完 while (c2!=0&&q!=null){
start.next=q; q=q.next; start=start.next; c2--; } start.next=flag; } } return l.next; }}
你可能感兴趣的文章
More Effective C++ 条款20 (转)
查看>>
一个程序员的爱恋 (转)
查看>>
足球战术->边锋之Decorator篇 (转)
查看>>
编写优质无错代码(1) (转)
查看>>
MySQL 4.1.0 中文参考手册 --- 6.3 用于 SELECT 和 WHERE 子句的函数 (1) (转)
查看>>
vs.net beta 2中利用DataGrid分页详解 (转)
查看>>
Process-Display-Process (PDP) pattern (转)
查看>>
基于构件复用的软件方法与COM支持 (转)
查看>>
DELPHI中使用API函数详解 (转)
查看>>
Single Entry Point to EJB Layer (转)
查看>>
InsideJVM(3)--Method area(方法区) (转)
查看>>
中文版Windows XP 的新增功能(转)
查看>>
Web Application 開 發 利 器 - WebSnap(三) (转)
查看>>
跟我学 安装Windows Vista Bata2实录(转)
查看>>
Windows Vista IIS 7.0开启方法(转)
查看>>
Windows Vista六大版本详细介绍(转)
查看>>
Windows XP 中注册表内容的导入和导出(转)
查看>>
正版风暴让盖茨命不盖绝 Linux祸福难料(转)
查看>>
单一产品不会成功 开源软件开始商业应用(转)
查看>>
RedHat上SSH2的安装和使用(转)
查看>>