首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
单链表的排序
[编程题]单链表的排序
热度指数:143756
时间限制:C/C++ 2秒,其他语言4秒
空间限制:C/C++ 256M,其他语言512M
算法知识视频讲解
给定一个节点数为n的无序单链表,对其按升序排序。
数据范围:
,保证节点权值在
之内。
要求:空间复杂度
,时间复杂度
示例1
输入
[1,3,2,4,5]
输出
{1,2,3,4,5}
示例2
输入
[-1,0,-2]
输出
{-2,-1,0}
说明:本题目包含复杂数据结构ListNode,
点此查看相关信息
马上挑战
算法知识视频讲解
提交运行
算法知识视频讲解
添加笔记
求解答(3)
邀请回答
收藏(1423)
分享
提交结果有问题?
308个回答
390篇题解
开通博客
Maokt
发表于 2021-07-16 14:24:31
精华题解
算法思想一:辅助数组 解题思路: 主要通过辅助数组实现链表的排序 1、遍历链表并将链表结点存储到数组 tmp 中 2、通过对 tmp 进行排序,实现链表结点的排序 3、构建新链表结点 result,遍历数组 tmp ,拼接新的返回链表 图解:
展开全文
牛客题解官
发表于 2022-04-22 11:33:05
精华题解
题目的主要信息: 给定一个无序链表,要将其排序为升序链表 举一反三: 学习完本题的思路你可以解决如下题目: BM5.合并k个已排序的链表 BM20.数组中的逆序对 方法一:归并排序(推荐使用) 知识点1:分治 分治即“分而治之”,“分”指的是将一个大而复杂的问题划分成多个性质相同但是规模更小的子
展开全文
2019113913
发表于 2021-07-15 21:44:16
精华题解
题意思路: 给定一个无序单链表,实现单链表的排序(按升序排序)。 方法一:利用stl和sort排序先新建一个vector,将单链表的元素存储于vector sort排序从小到大 将vector变成单链表 复杂度分析 时间复杂度:O(NlogN),N链表的长度,遍历链表,排序复杂度NlogN; 空间复
展开全文
LaN666
发表于 2020-12-06 15:59:48
值排序,不是真正做到链表排序,直接遍历整个链表,用一个数组存储所有的val,然后进行排序,最后将排序完的值赋值给链表 import java.util.*; public class Solution { public ListNode sortInList (ListNode head) {
展开全文
飘过的小牛
发表于 2021-03-15 15:05:55
链表的特点决定了只能从前往后的遍历,我的第一个思路是冒泡排序,但是超时,看了一眼归并排序的写法,真的是妙啊。 1 冒泡(未通过) public ListNode sortInList (ListNode head) { // write code here
展开全文
Kytron
发表于 2021-09-14 17:42:24
快速排序c++写法超99%时间写法 /** * struct ListNode { * int val; * struct ListNode *next; * }; */ class Solution { public: /** * * @pa
展开全文
梦会绽放
发表于 2022-01-31 12:51:58
思路:快速排序。 要求时间复杂度为 O(nlogn),对我们选取的排序算法做出了限制,我们知道时间复杂度为 O(nlogn)的算法有快排、堆排序、归并排序。这里考虑使用快排。 复杂度 平均时间复杂度O(nlog n),空间发复杂度O(n) 图示 代码(JAVA实现) public class
展开全文
hongjunxin
发表于 2020-12-10 23:21:05
解题思路 用 vector<ListNode*> 先存储链表中各个节点 使用 sort 对 vector 进行排序 将 vector 中的 ListNode 按顺序串联起来 /** * struct ListNode { * int val; * struct Li
展开全文
🐼201908171342330
发表于 2021-06-22 23:40:58
思路 原链表,挨个push到vector中; vector利用sort排序; 利用vector新建链表。 代码 class Solution { public: /** * * @param head ListNode类 the head node * @
展开全文
这还不简简单单?
发表于 2021-09-18 19:27:08
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * * @param head ListNode类 the head node * @return ListNode类 *
展开全文
牛客516598323号
发表于 2020-09-13 19:08:28
真的用链表去做很可能会超时。2333。简单搜索了一下,基本上都是改变链表每项内部数据的,而不是把链表重新连接。2333。用例通过率: 100.00% 运行时间: 233ms 占用内存: 11704KB. # # 离经叛道的方法 # @param head ListNode类 the head nod
展开全文
牛客网9527号
发表于 2021-10-08 23:33:58
堆排序应该是最简单直观的,且时间复杂度和空间复杂度都符合题目要求。注意点就是最后一个节点的next指针要设置为null,否则可能会出现环形链表的情况 import java.util.*; /* * public class ListNode { * int val; * ListN
展开全文
我是愿至安
发表于 2022-01-20 23:57:39
核心思想 实质是数组归并排序思想 /** * struct ListNode { * int val; * struct ListNode *next; * }; * * C语言声明定义全局变量请加上static,防止重复定义 */ /** * * @param head L
展开全文
问题信息
链表
排序
难度:
308条回答
1423收藏
9798浏览
热门推荐
通过挑战的用户
查看代码
随机昵称都有什...
2023-02-15 17:18:45
在午休的牛牛很活泼
2022-10-29 12:09:13
牛客95565...
2022-09-28 12:47:07
三_宝
2022-09-27 11:13:47
功崇惟志
2022-09-27 10:58:18
相关试题
在下列表述中,错误的是()
字符串
树
排序
评论
(43)
编程题 ,按照要求创建Java 应...
Java
评论
(1)
计算机系统中用于管理硬件和软件资源...
编程基础
评论
(1)
市场与销售的区别在哪里?
市场营销
评论
(1)
说出3个获取用户需求的方法并简述其...
用户研究
评论
(1)
单链表的排序
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题
import java.util.*; /* * 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) { // write code here } }
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head node * @return ListNode类 */ ListNode* sortInList(ListNode* head) { // write code here } };
#coding:utf-8 # class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head ListNode类 the head node # @return ListNode类 # class Solution: def sortInList(self , head ): # write code here
using System; using System.Collections.Generic; /* public class ListNode { public int val; public ListNode next; public ListNode (int x) { val = x; } } */ class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head node * @return ListNode类 */ public ListNode sortInList (ListNode head) { // write code here } }
/* * function ListNode(x){ * this.val = x; * this.next = null; * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head node * @return ListNode类 */ function sortInList( head ) { // write code here } module.exports = { sortInList : sortInList };
val = $x; } }*/ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head node * @return ListNode类 */ function sortInList( $head ) { // write code here }
# class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head ListNode类 the head node # @return ListNode类 # class Solution: def sortInList(self , head: ListNode) -> ListNode: # write code here
package main import "fmt" import . "nc_tools" /* * type ListNode struct{ * Val int * Next *ListNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head node * @return ListNode类 */ func sortInList( head *ListNode ) *ListNode { // write code here }
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head node * @return ListNode类 */ struct ListNode* sortInList(struct ListNode* head ) { // write code here }
# class ListNode # attr_accessor :val, :next # # def initialize(val = 0, _next = nil) # @val, @next = val, _next # end # end # # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head ListNode类 the head node # @return ListNode类 # class Solution def sortInList(head) # write code here end end
/** * class ListNode(var val: Int) { * var next: ListNode = null * } */ object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head node * @return ListNode类 */ def sortInList(head: ListNode): ListNode = { // write code here } }
/** * class ListNode(var `val`: Int) { * var next: ListNode? = null * } */ object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head node * @return ListNode类 */ fun sortInList(head: ListNode?): ListNode? { // write code here } }
import java.util.*; /* * 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) { // write code here } }
/*class ListNode { * val: number * next: ListNode | null * constructor(val?: number, next?: ListNode | null) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head node * @return ListNode类 */ export function sortInList(head: ListNode): ListNode { // write code here }
/** * public class ListNode { * public var val: Int * public var next: ListNode? * public init(_ val: Int = 0, _ next: ListNode? = nil) { * self.val = val * self.next = next * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head node * @return ListNode类 */ func sortInList ( _ head: ListNode?) -> ListNode? { // write code here } }
/** * #[derive(PartialEq, Eq, Debug, Clone)] * pub struct ListNode { * pub val: i32, * pub next: Option
> * } * * impl ListNode { * #[inline] * fn new(val: i32) -> Self { * ListNode { * val: val, * next: None, * } * } * } */ struct Solution{ } impl Solution { fn new() -> Self { Solution{} } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 the head node * @return ListNode类 */ pub fn sortInList(&self, head: Option
>) -> Option
> { // write code here } }
[1,3,2,4,5]
{1,2,3,4,5}
[-1,0,-2]
{-2,-1,0}