牛客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通俗易懂详解)