【题目描述】

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

在O(nlogn) 时间复杂度和常数级的空间复杂度下给链表排序。

【题目链接】

【题目解析】

此题可以归并排序。以下归并排序实现的几个要素。

1.按长度等分链表,归并虽然不严格要求等分,但是等分能保证线性对数的时间复杂度。由于链表不能随机访问,故可以先对链表进行遍历求得其长度。

2.合并链表,细节已在中详述。

在按长度等分链表时进行「后序归并」——先求得左半部分链表的表头,再求得右半部分链表的表头,最后进行归并操作。

由于递归等分链表的操作需要传入链表长度信息,故需要另建一辅助函数。

【参考答案】