LeetCode147. 对链表进行插入排序
1. 问题描述

2. 思路
- 遍历链表,找到开始下降的断点处
1.1. 遍历链表找到要插入的位置 - 插入
3. 代码
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func insertionSortList(head *ListNode) *ListNode {
header := &ListNode {
Val : 0,
Next : head,
}
var pre *ListNode
for head != nil && head.Next != nil {
// head.Next开始下降
if head.Val <= head.Next.Val {
head = head.Next
continue
}
// 找到head.Next要插入的位置
pre = header
for pre.Next.Val < head.Next.Val {
pre = pre.Next
}
// 在pre后插入head.Next
node := head.Next
head.Next = node.Next
node.Next = pre.Next
pre.Next = node
}
return header.Next
}
本文介绍了解决LeetCode 147题——对链表进行插入排序的方法。通过遍历链表找到需要调整的节点,并将其插入到合适位置,最终实现整个链表的有序排列。

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



