题解 | #牛群的身高排序#

牛群的身高排序

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
#链表排序#
线性表基础 文章被收录于专栏

链表、递归、栈

全部评论

相关推荐

05-26 09:07
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务