编程语言
首页 > 编程语言> > LeetCode147.对链表进行插入排序(Python)

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

时间复杂度:
在这里插入图片描述

标签:head,dummyhead,ListNode,Python,插入排序,next,链表,lastsorted
来源: https://blog.csdn.net/weixin_51871724/article/details/122346864