LeetCode147.对链表进行插入排序(Python)
Posted 归止于飞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode147.对链表进行插入排序(Python)相关的知识,希望对你有一定的参考价值。
题目思路:
可以理解为利用两个指针,一个对整个链表进行遍历,另一个在已经遍历过的线段寻找插入点。(建议画图便于理解)
利用
class Solution:
def insertionSortList(self, head: ListNode) -> ListNode:
# 首先判断链表是否为空
if not head:
return head
# 令dummy.head指向head,创建哑节点是为了方便将值插入头节点之前。
dummyhead = ListNode(0)
dummyhead.next = head
# lastsorted可以看成已经排序了的列表
lastsorted = head
cur = head.next
while cur:
if lastsorted.val <= cur.val:
lastsorted = lastsorted.next
else:
pre = dummyhead
# 寻找cur值应该插入的点
while pre.next.val <= cur.val:
pre = pre.next
lastsorted.next = cur.next
cur.next = pre.next
pre.next = cur
# 继续遍历下一个点
cur = lastsorted.next
return dummyhead.next
时间复杂度:
以上是关于LeetCode147.对链表进行插入排序(Python)的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode Algorithm 147. 对链表进行插入排序
LeetCode Algorithm 147. 对链表进行插入排序