题解 | #牛群的身高排序#
牛群的身高排序
https://www.nowcoder.com/practice/9ce3d60e478744c09768d1aa256bfdb5
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ public ListNode sortList (ListNode head) { // write code here ListNode hair = new ListNode(0), p, cur = head, next; while (cur != null) { next = cur.next; p = hair; while (p.next != null && p.next.val < cur.val) p = p.next; cur.next = p.next; p.next = cur; cur = next; } return hair.next; } }
- 定义一个虚拟头节点 hair 和指向 hair 的 p,以及指向原链表 head 的 cur
- 基于 cur 遍历原链表,每次用 p 在 hair 链表中找到值小于当前cur指向节点的值的前一个节点,然后将 cur 指向节点插入到hair链表中
- 最后返回 hair.next
线性表基础 文章被收录于专栏
链表、递归、栈