牛客Top200---链表排序(java)

Posted 小样5411

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客Top200---链表排序(java)相关的知识,希望对你有一定的参考价值。

题目

辅助数组

这个是比较容易写出的方法,就是另外创建一个ArrayList,然后将链表中的值放到数组中排序,再创建一个新链表,时间复杂度与空间复杂度都是O(n)

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 * }
 */

public class Solution {
    public ListNode sortInList (ListNode head) {
        //方法:辅助数组
        if(head == null || head.next == null){
            return head;
        }
        List<Integer> tempArr = new ArrayList<>();//辅助数组
        while(head != null){
            tempArr.add(head.val);
            head = head.next;
        }
        Collections.sort(tempArr);//对辅助数组进行排序
        ListNode res = new ListNode(-1);//创建新的头结点
        ListNode cur = res;
        for(int i = 0 ; i < tempArr.size() ; i++){
            ListNode node = new ListNode(tempArr.get(i));
            cur.next = node;
            cur = cur.next;
        }
        return res.next;
    }
}

以上是关于牛客Top200---链表排序(java)的主要内容,如果未能解决你的问题,请参考以下文章

牛客Top200---删除链表中倒数第n个结点(java详解)

牛客Top200---合并k个有序链表(java)

牛客Top200---链表相加(java详解)

牛客Top200---链表中的节点每k个一组翻转(java通俗易懂详解)

牛客Top200---判断一个链表是否为回文结构(java图解)

牛客Top200---括号序列(java详解)