HJ3 明明的随机数
牛客网:HJ3 明明的随机数
https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0?tpId=37&tqId=21226&ru=/exam/oj

使用Go语言解题,最简单的方式:
解题一:
// 运行时间:5ms 占用内存:1180KB
package mainimport ("fmt""sort"
)func main() {var n intnum := make([]int, 0, n)_, _ = fmt.Scan(&n)set := make(map[int]struct{}, n)for i := 0; i < n; i++ {var tmp int_, _ = fmt.Scan(&tmp)if _, ok := set[tmp]; ok {continue // 重复值跳过}set[tmp] = struct{}{}num = append(num, tmp)}sort.Ints(num)for _, number := range num {fmt.Println(number)}
}
解题比较暴力,直接去重后再排序,思索后,觉得应该有所优化,从样例数据来看,数据量并不大,似乎可以用哈希表解题;
解题二:
// 运行时间:5ms 占用内存:1052KB
package mainimport ("fmt"
)func main() {var n int_, _ = fmt.Scan(&n)set := make([]int, 500, 500)for i := 0; i < n; i++ {var tmp int_, _ = fmt.Scan(&tmp)set[tmp] = tmp}for _, number := range set {if number != 0 {fmt.Println(number)}}
}
提交后,发现与第一种代码的运行时间和内存占比相差不大,开始查阅排行榜大哥代码,发现耗时原因出现在数据的录入上,修改代码重新提交
解题三:
//运行时间:4ms 占用内存:1308KB
package mainimport ("bufio""fmt""os""strconv"
)func main() {scan := bufio.NewScanner(os.Stdin)scan.Scan()if len(scan.Text())==0{return}n,_:=strconv.Atoi(scan.Text())set := make([]int, 500, 500)for i := 0; i < n; i++ {scan.Scan()tmpStr := scan.Text()tmp,_:=strconv.Atoi(tmpStr)set[tmp] = tmp}for _, number := range set {if number != 0 {fmt.Println(number)}}
}
运行时间缩短了1ms,内存涨了250kb,再次修改代码
解题四:
// 运行时间:4ms 占用内存:1096KB
package mainimport ("bufio""fmt""os""strconv"
)func main() {scan := bufio.NewScanner(os.Stdin)scan.Scan()if len(scan.Text())==0{return}n,_:=strconv.Atoi(scan.Text())set := make([]bool, 500, 500)for i := 0; i < n; i++ {scan.Scan()tmpStr := scan.Text()tmp,_:=strconv.Atoi(tmpStr)set[tmp] = true}for number, v := range set {if v == true {fmt.Println(number)}}
}
内存缩小,时间未变,不太理解,找到排行榜第一的代码进行提交,终于找到原因:

相同的代码,运行时间差距和内存差距,存在于牛客网的测评机,与代码无关,放弃挣扎;使用哈希表和sort在数据量不大的情况下,解决这道题,没有过多优化。
相关文章:
HJ3 明明的随机数
牛客网:HJ3 明明的随机数 https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0?tpId37&tqId21226&ru/exam/oj 使用Go语言解题,最简单的方式: 解题一: // 运行时间:5ms 占用内存:…...
如何恢复u盘删除文件?2023最新分享四种方法恢复文件
U盘上删除的文件怎么恢复?使用U盘存储文件是非常方便的,例如:在办公的时候,会使用U盘来存储网络上查找到的资料、产品说明等。在学习的时候,会使用U盘来存储教育机构分享的教学视频、重点知识等。而随着U盘存储文件的概…...
8.稳定性专题
1. anr https://code84.com/303466.html 一句话,规定的时间没有干完要干的事,就会发生anrsystem_anr场景 input 5sservice 前台20s 后台60scontentprivider超市 比较少见 原因 主线程耗时 复杂layout iobinder对端block子线程同步锁blockbinder被占满导…...
基于51单片机的四种波形信号发生器仿真设计(仿真+程序源码+设计说明书+讲解视频)
本设计 基于51单片机信号发生器仿真设计 (仿真程序源码设计说明书讲解视频) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0015 这里写目录标题 基于51单片机信号发生…...
不同网段的IP怎么互通
最近在整理工作的时候发现一个不同网段无法互通的问题,就是我们大家熟知的一级路由和二级路由无法互通的问题。由于需要记录整个过程的完整性,这里也需要详细记录下整个过程,明白的人不用看,可以直接跳过,到解决方法去…...
C#序列化与反序列化详解
在我们深入探时C#序列化和反序列化,之前我们先要明白什么是序列化,它又称串行化,是.ET运行时环境用来支持用户定义 类型的流化的机制。序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再…...
如何在k8s的Java服务镜像(Linux)中设置中文字体
问题描述:服务是基于springboot的Java服务,在项目上是通过Maven的谷歌插件打包,再由k8s部署的。k8s的镜像就是一个Java服务,Java服务用到了中文字体。 解决这个问题首先需要搞定镜像字体的问题。有很多类似的解决方案,…...
CT 扫描的 3D 图像分类-预测肺炎的存在
介绍 此示例将展示构建 3D 卷积神经网络 (CNN) 所需的步骤,以预测计算机断层扫描 (CT) 扫描中是否存在病毒性肺炎。2D CNN 通常用于处理 RGB 图像(3 通道)。3D CNN 就是 3D 的等价物:它以 3D 体积或一系列 2D 帧(例如 CT 扫描中的切片)作为输入,3D CNN 是学习体积数据表…...
整合管理案例题分析
本文摘自江山老师文档 五个过程 制定项目章程 1.没有写项目章程,没有颁布 2.项目经理自己颁布项目章程 3.项目经理修改项目章程 4.项目章程授权不够,项目经理没有权限,下面的人不听话 5.项目章程的内容不完整 制定项目管理计划 1.项目…...
mysql4
创建表并插入数据: 字段名 数据类型 主键 外键 非空 唯一 自增 id INT 是 否 是 是 否 primary key name VARCHAR(50) 否 否 是 否 否 not null glass VARCHAR(50) 否 否 是 否 否 not nullsch 表内容 id name glass 1 xiaommg glass 1 2 xiaojun …...
Python深度学习实战-基于tensorflow原生代码搭建BP神经网络实现分类任务(附源码和实现效果)
实现功能 前面两篇文章分别介绍了两种搭建神经网络模型的方法,一种是基于tensorflow的keras框架,另一种是继承父类自定义class类,本篇文章将编写原生代码搭建BP神经网络。 实现代码 import tensorflow as tf from sklearn.datasets import…...
PDF 文档处理:使用 Java 对比 PDF 找出内容差异
不论是在团队写作还是在个人工作中,PDF 文档往往会经过多次修订和更新。掌握 PDF 文档内容的变化对于管理文档有极大的帮助。通过对比 PDF 文档,用户可以快速找出文档增加、删除和修改的内容,更好地了解文档的演变过程,轻松地管理…...
压敏电阻有哪些原理?|深圳比创达电子EMC
压敏电阻是一种金属氧化物陶瓷半导体电阻器。它以氧化锌(ZnO)为基料,加入多种(一般5~10种)其它添加剂,经压制成坯体,高温烧结,成为具有晶界特性的多晶半导体陶瓷组件。氧化锌压敏电阻器的微观结构如下图1所示。 氧化锌…...
【计算机网络笔记】Web应用之HTTP协议(涉及HTTP连接类型和HTTP消息格式)
系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…...
IDEA 2023.2.2 使用 Scala 编译报错 No scalac found to compile scala sources
一、问题 scala: No scalac found to compile scala sources 官网 Bug 链接 二、临时解决方案 Incrementality Type 先变成 IDEA 类型 Please go to Settings > Build, Execution, Deployment > Compiler > Scala Compiler and change the Incrementality type to …...
C51--PWN-舵机控制
PWM开发sg90舵机 1、简介 PWM(pulse width modulation)是脉冲宽度调制缩写。 通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值)。对模拟信号电平进行数字编码,通过调节占空比的变化来…...
electron27+react18集成搭建跨平台应用|electron窗口多开
基于Electron27集成React18创建一个桌面端exe程序。 electron27-vite4-react18基于electron27结合vite4构建工具快速创建react18跨端应用实践。 版本列表 "vite": "^4.4.5" "react": "^18.2.0" "electron": "^27.0.1&…...
【k8s】kubeadm安装k8s集群
一、环境部署 master192.168.88.10docker、kubeadm、kubelet、kubectl、flannelnode01192.168.88.20docker、kubeadm、kubelet、kubectl、flannelnode02192.168.88.30docker、kubeadm、kubelet、kubectl、flannelhub.lp.com192.168.88.40 docker、docker-compose harbor-offli…...
三、虚拟机的迁移和删除
虚拟机的本质就是文件(放在文件夹的)。因此虚拟机的迁移很方便,可以把安装好的虚拟系统这个文件夹整体拷贝或者剪切到另外的位置使用。删除也很简单,使用vmware进行移除,再点菜单->从磁盘删除即可,或者手动删除虚拟系统对应的文…...
RabbitMQ的交换机(原理及代码实现)
1.交换机类型 Fanout Exchange(扇形)Direct Exchange(直连)opic Exchange(主题)Headers Exchange(头部) 2.Fanout Exchange 2.1 简介 Fanout 扇形的,散开的࿱…...
造相-Z-Image-Turbo亚洲LoRA WebUI教程:多分辨率适配(768x1024/1024x1024)
造相-Z-Image-Turbo亚洲LoRA WebUI教程:多分辨率适配(768x1024/1024x1024) 提示:本文介绍的镜像已预装所有依赖和环境,开箱即用,无需手动配置 1. 开篇:为什么需要这个工具? 如果你正…...
告别编译失败:Qt 6.6.0交叉编译到ARM平台最常见的5个错误及解决方法(基于gcc-linaro-14.0.0)
告别编译失败:Qt 6.6.0交叉编译到ARM平台最常见的5个错误及解决方法(基于gcc-linaro-14.0.0) 最近在将Qt 6.6.0交叉编译到i.MX6ULL开发板时,遇到了不少坑。作为一个经历过多次编译失败的老手,我整理了几个最容易导致编…...
OpenClaw飞书机器人配置:基于gemma-3-12b-it的对话自动化
OpenClaw飞书机器人配置:基于gemma-3-12b-it的对话自动化 1. 为什么选择OpenClaw飞书本地模型组合 去年我接手了一个需要频繁处理文档和数据的项目,每天要花3小时在飞书群聊和本地文件之间来回切换。尝试过各种自动化工具后,最终选择了Open…...
Oracle VM VirtualBox快速上手指南——Win10环境下的下载与安装详解
1. 为什么选择VirtualBox搭建虚拟环境? 作为一个在虚拟化领域摸爬滚打多年的老手,我测试过市面上几乎所有主流虚拟机软件。对于Windows 10用户来说,Oracle VM VirtualBox绝对是入门虚拟化的首选利器。它最大的优势就是完全免费开源࿰…...
基于S7-200控制的自动洗车系统的综合设计与实现
基于S7-200控制的自动洗车系统 本设计包括设计报告,PLC组态仿真,I/O接口,带注释程序pdf版,接线图,控制电路图,主电路图,PLC接线图,顺序功能图 总体设计 系统有自动和手动模式,选择手…...
windows本地开发环境搭建指南:Docker + 常用中间件一键部署
本文介绍如何在本地使用 Docker Desktop 快速搭建包含 MySQL、Redis、PostgreSQL、Nacos、Kafka 等常用中间件的开发环境。所有服务的数据与配置文件均持久化到本地,删除容器后数据不丢失,配置随时可改。 目录 一、安装 Docker Desktop二、可选…...
jEasyUI 自定义对话框
jEasyUI 自定义对话框 引言 jEasyUI是一款流行的前端框架,它提供了一套完整的UI组件,旨在帮助开发者快速构建富客户端应用程序。在jEasyUI中,对话框是一个非常重要的组件,它可以用于显示信息、收集用户输入或执行其他交互任务。本文将详细介绍如何使用jEasyUI自定义对话框…...
c++编程:说反话(1009-PAT乙级)
1009:说反话cin >> 读取字符串时不能读取空格string s; cin >> s; // 输入 "hello world" cout << s; // 输出 "hello"(空格后面的被丢弃)如何读取带空格的整行?getline()str…...
35岁程序员收藏!转行大模型,抢占高薪风口,从入门到高薪 Offer 全攻略
35岁程序员收藏!转行大模型,抢占高薪风口,从入门到高薪 Offer 全攻略 35岁程序员面临职业瓶颈,大模型技术提供了转行出路。文章分析了为何转行大模型是明智之选,包括行业风口、需求缺口大、原有技术可复用、职业生命周…...
OpenClaw多模态探索:Qwen3-32B驱动截图OCR与结构化数据处理
OpenClaw多模态探索:Qwen3-32B驱动截图OCR与结构化数据处理 1. 项目背景与需求场景 在日常工作中,我们经常遇到需要从截图或PDF文档中提取表格数据的情况。传统OCR工具虽然能识别文字,但往往无法保持表格结构,导致后续需要大量手…...
