原题
https://leetcode.cn/problems/insertion-sort-list/description/
思路
遍历
复杂度
时间:O(n2)
空间:O(n)
Python代码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def insertionSortList(self, head: Optional[ListNode]) -> Optional[ListNode]:
if not head or not head.next:
return head
dummy = ListNode(0, head)
while head.next:
if head.val < head.next.val:
head = head.next
else:
prev = dummy
temp = head.next
head.next = temp.next
while prev.next and prev.next.val < temp.val:
prev = prev.next
temp.next = prev.next
prev.next = temp
return dummy.next
Go代码
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func insertionSortList(head *ListNode) *ListNode {
if head == nil || head.Next == nil {
return head
}
dummy := &ListNode{0, head}
for head.Next != nil {
if head.Val < head.Next.Val {
head = head.Next
} else {
prev := dummy
temp := head.Next
head.Next = temp.Next
for prev.Next != nil && prev.Next.Val < temp.Val {
prev = prev.Next
}
temp.Next = prev.Next
prev.Next = temp
}
}
return dummy.Next
}
966

被折叠的 条评论
为什么被折叠?



