题解 | 单链表的排序

单链表的排序

https://www.nowcoder.com/practice/f23604257af94d939848729b1a5cda08

import java.util.*; 
import java.util.PriorityQueue;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 the head node
     * @return ListNode类
     */
    public ListNode sortInList (ListNode head) {
        if(head == null || head.next == null) {
            return head;
        }
	  	// 申明一个优先级队列,并传入一个比较器,比较ListNode中val值的大小
        Queue<ListNode> queue = new PriorityQueue<>((x,y) -> {
            return x.val - y .val;
        });
	  	// 把ListNode中所有的节点放入到优先级队列中
        queue.add(head);
        while(head.next != null) {
            head = head.next;
            queue.add(head);
        }
		// 从优先级队列中poll元素,组装结果
        ListNode result = queue.poll();
        ListNode tempNode = result;
        while(!queue.isEmpty()) {
            tempNode.next = queue.poll();
            tempNode = tempNode.next;
        }
	 	// 把最后一个节点的下一个节点置为null,防止循环
        tempNode.next = null;
        return result;
    }
}

全部评论

相关推荐

05-19 15:21
已编辑
华南农业大学 Java
白火同学:你才沟通了200,说实话,北上广深杭这里面你连一座城市的互联网公司都没投满呢,更别说还有各种准一线二线城市了。等你沟通突破了三位数,还没结果再考虑转行的事吧。
点赞 评论 收藏
分享
05-25 10:45
门头沟学院 Java
Frank_zhan...:没实习一个项目肯定不够,可以再做一个轮子,技术栈再补一个mq,微服务,整体再换个简历模板,暑期尽量再找一个日常实习
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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