BM12 单链表的排序

该博客介绍了如何使用O(nlogn)的时间复杂度对一个包含n个节点的无序单链表进行升序排序。通过将链表元素复制到数组,利用数组的内置排序方法,然后将排序后的值重新赋值回链表,实现了链表的排序。代码示例中展示了具体的实现过程。
摘要由CSDN通过智能技术生成

描述
给定一个节点数为n的无序单链表,对其按升序排序。

数据范围:0 < n \le 1000000<n≤100000
要求:时间复杂度 O(nlogn)O(nlogn)

示例1
输入:
{1,3,2,4,5}
返回值:
{1,2,3,4,5}
示例2
输入:
{-1,0,-2}
返回值:
{-2,-1,0};
思路:这题还是简单,先取值保存到数组里然后直接使用数组的sort方法,在将排序好的值放回去即可;
代码


 function ListNode(x){
  this.val = x;
  this.next = null;
 }


/**
 * 
 * @param head ListNode类 the head node
 * @return ListNode类
 */
function sortInList( head ) {
    // write code here
    let arr = [], obj = head,  temp = null;
    if(!head || !head.next) return head;
    while(head){
        arr.push(head.val);
        head = head.next;
    }
    arr.sort((a, b) => a - b);
    temp = obj;
    for( let i = 0; i < arr.length; i++){
        temp.val = arr[i];
        temp = temp .next;
    }

    return obj;
}
module.exports = {
    sortInList : sortInList
};

来自牛客编程题 https://www.nowcoder.com/exam/oj

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值