📑 题目:147. 对链表进行插入排序

🚀 本题 LeetCode 传送门

题目大意

链表的插入排序

解题思路

按照题意做即可。

代码

  1. package leetcode
  2. /**
  3. * Definition for singly-linked list.
  4. * type ListNode struct {
  5. * Val int
  6. * Next *ListNode
  7. * }
  8. */
  9. func insertionSortList(head *ListNode) *ListNode {
  10. if head == nil {
  11. return head
  12. }
  13. newHead := &ListNode{Val: 0, Next: nil} // 这里初始化不要直接指向 head,为了下面循环可以统一处理
  14. cur, pre := head, newHead
  15. for cur != nil {
  16. next := cur.Next
  17. for pre.Next != nil && pre.Next.Val < cur.Val {
  18. pre = pre.Next
  19. }
  20. cur.Next = pre.Next
  21. pre.Next = cur
  22. pre = newHead // 归位,重头开始
  23. cur = next
  24. }
  25. return newHead.Next
  26. }