题目形容
在 O(nlogn) 工夫复杂度和常数级空间复杂度下,对链表进行排序。
示例 1:
输出: 4->2->1->3
输入: 1->2->3->4
崩溃思路
一、递归归并排序
1、应用快慢指针在两头节点将链表cut;
2、应用左右节点对cut后的链表进行递归cut;
3、递归终止条件:listnode.next = null;
4、对合成后的链表进行递归merge
二、链表转数组再回填(空间复杂度n,工夫复杂度nlogn)
1、将链表数据填入数组2、对数组排序3、将数值从新写入链表
语言积攒
1、应用快慢指针疾速查找链表的两头节点,须要留神对尾节点的判空,快慢指针在同一终点和快指针的初始地位在满指针的后面一个地位,有点区别2、对数组递归cut的时候,留神递归的写法3、递归merge的时候,返回节点及造成链表的形式有点意思```left.next = mergeList(left.next, right); return left;
### vscode代码链接[https://github.com/lunaDolphin/leetcode/tree/master/queue_linkedList_sortList_148](https://github.com/lunaDolphin/leetcode/tree/master/queue_linkedList_sortList_148)[https://github.com/lunaDolphin/leetcode/tree/master/queue_linkedList_sortList_148_1](https://github.com/lunaDolphin/leetcode/tree/master/queue_linkedList_sortList_148_1)