1,题目思路:对链表进行排序,时间复杂度要求O(n log n),空间复杂度要求常量。
2,做题思路:
1) 最开始写的代码是用快速排序算法。但时间超过限制。
首先把链表元素放到vector中,然后运用快速排序,对vector中元素进行排序,然后再把vector中元素变换成链表。另,链表直接用快排很不方便。
2)上述算法超过时间限制。后来发现,c++有这个现成算法函数——sort()。
同样是先把链表元素放到vector中,然后运用sort()函数排序,最后组装成链表。
3)其实,可以直接在链表上运用归并排序。一方面,归并排序时间复杂度是O(n log n),另一方面,如果用链表的话,可以保证空间限制。否则,如果用vector,空间是线性的。