牛客 - 单链表排序
单链表排序
- **BM12** **单链表的排序**
- 链接
- 问题描述
- 代码
BM12 单链表的排序
链接
单链表的排序_牛客题霸_牛客网 (nowcoder.com)
问题描述
给定一个节点数为n的无序单链表,对其按升序排序。
数据范围: 0 < n≤100000
要求:空间复杂度O(n),时间复杂度0(nlogn)
示例1
输入: [1,3,2, 4,5]
返回值: {1,2,3,4,5}
示例2
输入: [-1,0,-2]
返回值: {-2,-1,0}
代码
这个是O(n²)的算法,选择排序
import random# 链表的结点结构
class ListNode:def __init__(self, x):self.val = xself.next = None
# 传入一个数组,创建一个链表
def create_list(values):head = ListNode("head")current = headfor value in values:node = ListNode(value)current.next = nodecurrent = nodereturn head
# 输出一个链表
def print_list(head):current = head.nextwhile current:print(current.val,end=" ")current = current.nextprint()class Solution:# 链表排序def sortInList(self , head: ListNode) -> ListNode:# 1、设置新的头,设置一下当前指向的节点currentnew_head = ListNode("head")current = head.next# 2、current往后扫,摘掉一个接到newhead上while current:self.insert(new_head,current)current = current.nextreturn new_head# 传入一个链表结点,插入到linkedlist中def insert(self,linkedlist,node):# 保存头结点和当前节点,包装一个newnodehead = linkedlistcurrent = headnew_node = ListNode(node.val)# 往后找,找到比他大的if current.next is None:head.next = new_nodereturn# 将节点插入到这个位置while current.next is not None and current.next.val < node.val:current = current.nextnew_node.next = current.nextcurrent.next = new_nodemy_list = [random.randint(-100000,10000000) for i in range(100000)]
my_linklist = create_list(my_list)
# print_list(my_linklist)
s = Solution()
print_list(s.sortInList(my_linklist))
作弊的方法:O(nlogN)
class Solution:def sortInList(self, head):# write code herelist1 = []cur = headwhile cur:list1.append(cur.val)cur = cur.nextcur = headfor i in sorted(list1):cur.val = icur = cur.nextreturn head
牛客 - 单链表排序相关推荐
- 面试题精选:单链表排序也能玩出花来
今天国庆节,祝大家中秋节快乐,顺便给大家拜个早年[狗头].不过最近还在准备面试的同学们不要浪太狠,还是要好好学习的鸭. 单链表的排序在数据结构类的面试题中简直是集大成者,什么排序.链表.链表删除.添加 ...
- 单链表排序----快排 归并排序
单链表排序----快排 & 归并排序 原文:http://blog.csdn.net/u012658346/article/details/51141288 题目描述: 给定一个乱序的单链表 ...
- 单链表排序之直接插入排序
****单链表排序之直接插入排序**** /*前段时间刚学会几种排序方法,最近学习了单链表,就用来试试,本篇链表的排序方法<一>讲述的是单链表的直接插入排序:(注意:请仔细看准节点结构体的 ...
- python单链表排序_单链表排序之选择排序
单链表排序是单链表的常见编程任务之一,也是面试中经常出现的题目.单链表排序的关键是交换算法,需要额外考虑.选择排序是比较直观的排序算法之一,这里就使用选择排序实现单链表的排序. C实现代码如下: Li ...
- 单链表的应用--对单链表排序
对单链表进行排序,利用前文写好的链表的框架,在链表类中补充Sort方法. 对单链表排序 一.问题分析 二.代码分析 1.链表类LinkList 2.链表方法Sort 三.测试代码 1.主函数 2. ...
- 单链表排序(交换节点)
单链表排序(移动节点) 单链表排序利用了选择排序的方式: 创建一个单链表结构体 typedef int data_t;//为了能适应存储其他类型数据,可以将int换成其他数据类型而不通用一个一个更改程 ...
- 【百日冲大厂】第二篇,牛客网选择题+排序子序列+倒置字符串
前言: 大家好,我是良辰丫,今天是刷题的第二篇,牛客网选择题+排序子序列+倒置字符串,每天都去努力,每天都庆幸今天的自己比昨天的自己更优秀,加油,为理想而努力吧!!!
- C语言版--单链表排序,冒泡排序,选择排序,插入排序,快速排序,应有尽有,保证看懂,没有bug!交换节点版本!
一.废话不多说,直接上代码.如果想看双向循环链表的朋友,可以在我的博客里找. 你好 #include <stdio.h> #include <stdlib.h>typedef ...
- 牛客网 链表结构 算法相关内容
链表结构 单链表的节点结构 由以下结构的节点依次连接起来所形成的链叫单链表结构 Clas Node<V>{ V value; Node next; } 双链表的节点结构 由以下结构的节点 ...
最新文章
- 亚洲诚信带你玩转[2018国家网络安全宣传周]上海地区活动!
- python计算出nan_python如何进行汇总统计?
- 用html标记语言,HTML标记语言——引用
- vim 格式化json
- Hash(LCP) || 后缀数组 LA 4513 Stammering Aliens
- Val编程-界面编程
- django分页功能 views与templates
- The Gradient Operator
- android知识杂记(一)
- python hog特征提取,直接从原始图像的HoG特征提取编辑图像的HoG特征
- PyCharm下载及安装教程(Windows)
- 正负筛选(neo正向+HSV-tk负向)原理
- 水下机器人ROV和AUV
- linux系统单网卡绑定双IP的方法
- 互联网开发搞手游创作1-为何有这想法
- MATLAB基础--MATLAB图像处理基础
- python+django大学生专业社团信息管理系统
- 外挂制作之思路总结和基址与偏移量
- 李航统计学习方法 Chapter2 感知机
- 一款简约WordPress Qui-Pure博客主题,自媒体模板
热门文章
- iwebshop框架中如何处理SQL?
- python tkinter详解
- 机器学习面试知识点总结(更新中...)
- MySQL的ADO控件_力控组态软件后台组件Ado组件的控件方法1
- AutoCAD DxfCode组码值类型(一)
- github国内网访问方式
- STM32F10x并行驱动lcd12864遇到的问题及其解决方案
- 姿态解算与左右手坐标系
- The 6th Zhejiang Provincial Collegiate Programming Contest
- jom qt linux,【求助】Qt Creater编译问题——jom.exe退出