给你链表的头结点 head ,请将其按升序排列并返回排序后的链表 。
解题思路:链表、归并排序、子问题
- 解题工具:
- 递归逻辑,求解子问题
- 链表等分算法
- 链表合并算法
2.递归处理过程,实现链表切分和有序表合并
- 终止条件和返回值
#其一:单个节点为切分终点,返回长度为一的链表
while head or head.next:
return head #
其二:返回合并后的有序链表
return mergeSortList(left,right) #返回有序链表
- 单层逻辑
leftH,rightH = listHalfCut(head) # 将当前链表等分,封装函数
#左右两分片,分别继续切分
left = sortList(leftH)
right = sortList(rightH)