单链表的归并排序
来源:互联网 发布:java web和前端开发 编辑:程序博客网 时间:2024/05/21 04:18
题目描述
Sort a linked list in O(n log n) time using constant space complexity.
算法:
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { public ListNode sortList(ListNode head) { if(head==null||head.next==null)return head; ListNode fast=head.next,slow=head,mid; while(fast!=null&&fast.next!=null){ fast=fast.next.next; slow=slow.next; } mid=slow.next; slow.next=null; ListNode left=sortList(head); ListNode right=sortList(mid); head=merge(left,right); return head; } static ListNode merge(ListNode left,ListNode right){ ListNode dummy=new ListNode(0); ListNode p=dummy; while(left!=null&&right!=null){ if(left.val<right.val){ p.next=left; left=left.next; } else{ p.next=right; right=right.next; } p=p.next; } if(left!=null){ p.next=left; } if(right!=null){ p.next=right; } return dummy.next; }}
0 0
- 单链表的归并排序
- 单链表的归并排序
- 单链表的归并排序
- 单链表的归并排序
- 单链表的归并排序
- 单链表的归并排序
- 单链表的归并排序
- 单链表的归并排序
- 单链表的归并排序
- 单链表的归并排序
- 自然归并排序和单链表实现的归并排序
- 单链表的排序(归并排序)
- 单链表的快速排序和归并排序
- 用归并排序实现单链表的排序
- 单链表的归并排序和插入排序
- 归并排序以及归并排序的优化
- 单链表的排序 快速排序 归并排序 quicksort mergesort
- 单链表的归并、快速排序 C++
- eclipse 常用插件 整理
- C#上机实验之题目四
- 【R机器学习笔记】XGBoost——XGBboost包
- Hibernate 学习笔记2
- Nginx配置记录
- 单链表的归并排序
- PAT_1032. Sharing(自己的代码最后一个case没过)
- Elasticearch索引mapping写入、查看、修改(head、kopf插件)
- POJ 1698 Alice's Chance 二分图多重匹配 网络最大流
- 1030. 完美数列(25)
- 第一章 USB Type C的基本原理(连载一)
- PL/SQL DeveloperZ中文乱码问题解决
- 冒泡排序-选择排序-快速排序(PHP实现)
- 熵模型—— 熵,条件熵,联合熵,相对熵,互信息及其关系,最大熵模型。。