如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)_对n个整数进行排序要求时间复杂度为on空间复杂度为o1-程序员宅基地

技术标签: 每日算法  

咋一看会觉得没有办法实现,因为所有的排序方法都无法满足该时间复杂度o(n)和空间复杂度o(1)。

但是如果n是有限的,其实是有办法可解的:假设n 没有超过int的最大值 ,0<n<65536 这里我们暂时不考虑为负数的情况(负数也可解)。

可以定义一个大小为65535的数组,遍历n个元素,以其值做索引,值为出现的个数

0 -》 array[0]++;

1 -》 array[1]++;

....

 

再遍历array数组,根据array数组打印出现个数大于0的下标,打印的次数为该下标的值



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yangzheng110/article/details/52980340

智能推荐

java1.8以后 关于集合stream.mapToDouble.sum计算精度缺失纪要-程序员宅基地

文章浏览阅读9.2k次。/** * 背景:在金额数据计算的时候会存在精度问题,以下是在涉及金额计算过程中Double相关的精度问题纪要。 * 由于此数值的实际使用精度在项目中只有两位,为了保留准确的精度多保留了其余的精度。因此仅供参考。 * 如果是其他的场景,需要根据情况自行调整具体的精度配置。 * * 问题:java1.8以后 关于集合stream.mapToDouble.sum计算精度缺失该如何解决? * 说明: * 如下两个Demo中:testK的正常计算结果应该是2.408631,但是通过sum计算完成后出._maptodouble

linux git 发邮件,在Linux中无法使用git send-email发送源代码和补丁-程序员宅基地

文章浏览阅读825次。我在本地创建了一个目录:/ home / Tegra.我在/ home / Tegra中创建了以下文件:hello_world.c hello_world_1.c hello_world_2.c每个文件都是逐步修改的.我还创建了补丁:diff -u hello_world.c hello_world_1.c > hello_world_1.patchdiff -u hello_world_1..._no subject line in ./message? at /usr/libexec/git-core/git-send-email line 7

做一个好的程序员难吗?只需要这10个习惯_程序员是个好职业吗-程序员宅基地

文章浏览阅读248次。如果你想成为一名优秀的程序员,你还需要注意几点,如果你能让以下十项成为你的习惯,那么你就真的可以算是一名优秀的程序员了。_程序员是个好职业吗

Linux串口驱动(1) - serial层_linux serial-程序员宅基地

文章浏览阅读1.3k次。1. serial 层的初始化以IMX6的串口驱动为例,文件在drivers/tty/serial/imx.c,初始化概述如下:module_init(imx_serial_init) -->uart_register_driver(&imx_reg); -->tty_set_operations(normal, &uart_ops); -->driver->ops = op; -->tty_register_..._linux serial

快来一起挖掘幸福感!——阿里云天池项目实战(附完成实践过程+代码)_阿里云天池大赛幸福感预测-程序员宅基地

文章浏览阅读4.9k次,点赞6次,收藏83次。传送门:快来一起挖掘幸福感!——官方链接目录一、开发环境介绍二、数据的分析、处理2.1 数据初步分析●观察调查问卷●数据可视化处理2.2 数据的处理●对于特征的删除●对于特征的填充●对于特征的泛化以及特征工程●对于标签的修正2.3 数据的规范化2.3.1归一化处理2.3.2 one-hot 独热编码三、训练模型的选择、调优3.1 任务分析3.2模型选择3.3参数调优3.4 交叉验证四、实验结果展示五、探索历......_阿里云天池大赛幸福感预测

嵌入式学习——I2C总线通信协议_嵌入式iic总线通讯协议-程序员宅基地

文章浏览阅读702次。I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设;STM32 标准库则是在寄存器与用户代码之间的软件层。对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。_嵌入式iic总线通讯协议

随便推点

GP232RNL兼容替代FT232RL/FT232RNL USB转UART桥接控制器芯片低成本方案_ft232rnl与ft232rl区别-程序员宅基地

文章浏览阅读1k次,点赞19次,收藏19次。GP232RNL是一款高度集成的USB到UART桥接控制器,提供了一种简单的解决方案,可以使用最少的元器件和PCB空间,将RS232接口转换为USB接口。GP232RNL 包括-一个USB 2. 0全速功能控制器、USB收发器、振荡器、EEPROM和带有完整的调制解调器控制信号的异步串行数据总线(UART), 集成在SS0P28封装中,不需要其他外部USB元件。●集成1024位EEPROM,用于存储供应商ID、产品ID、序列号、电源描述符、版本号、产品描述字符串和CBUSI/O配置;_ft232rnl与ft232rl区别

树莓派3b搭建web服务器(部署Django项目)_树莓派3b web server-程序员宅基地

文章浏览阅读1.5k次。系统准备centos7 镜像 CentOS-Userland-7-armv7hl-Minimal 1603-RaspberryPi3.img.xz 运行Win32DiskImager 软件, 将镜像写入内存卡中.ssh 连接树莓派在另一台linux设备或windows设备,ssh 连接树莓派. * windows 下载Xshell 软件连接. * linux(以ubuntu为例), ss_树莓派3b web server

巧用excel工具,实现分类汇总_excel将不同内容归类csdn-程序员宅基地

文章浏览阅读441次。excel工具分类求和小妙招_excel将不同内容归类csdn

详解IP安全:【IPSec协议簇 - AH协议 - ESP协议 - IKE协议】-程序员宅基地

文章浏览阅读822次,点赞19次,收藏22次。大型网络系统内运行多种网络协议(TCP/IP、IPX/SPX和NETBEUA等),这些网络协议并非为安全通信设计。而其IP协议维系着整个TCP/IP协议的体系结构,除了数据链路层外,TCP/IP的所有协议的数据都是以IP数据报的形式传输的。TCP/IP协议族有两种IP版本:版本4(IPv4)和版本6(IPv6),IPv6是IPv4的后续版本,IPv6简化了IP头,其数据报更加灵活,同时IPv6还增加了对安全性的考虑。

WIN10删除微软拼音输入法,设置默认输入法为英文_微软拼音输入法删除后没有纯英文输入怎么办-程序员宅基地

文章浏览阅读1k次。WIN10删除微软拼音输入法,设置默认输入法为英文删除微软拼音输入法设置英文为默认输入方式删除微软拼音输入法在安装好自己熟悉的输入法后,我通常会将系统自带的微软拼音输入法删除,但系统又总是会自动重装上去。解决的办法很简单,删除以后,再手动添加一次微软拼音输入法,然后再一次删除,以后系统就不会再次自动重装了。设置英文为默认输入方式然后点高级键盘设置,选择默认输入法..._微软拼音输入法删除后没有纯英文输入怎么办

Last_SQL_Error: Error 'Can't drop database 'ABC'; database doesn't exist' on query. Default database...-程序员宅基地

文章浏览阅读1.5k次。查看从库状态发现报错:show slave status\G;发现是主库上删除了一个数据库,但是从库上面没有,从库执行这个语句的时候失败报错。解决方法:停止从库stop slave;创建语句中所说的数据库,这里使用ABCcreate database ABC;启动从库start slave;问题解决。再次查看show slave status\G,发..._error 'duplicate partition name p20240222' on query. default database: 'wins