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)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode147.对链表进行插入排序(Python)

LeetCode--147.对链表进行插入排序

LeetCode Algorithm 147. 对链表进行插入排序

LeetCode Algorithm 147. 对链表进行插入排序

我用java刷 leetcode 147. 对链表进行插入排序

LeetCode147.对链表进行插入排序(Python)