当前位置: 首页 > news >正文

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在数据量不大的情况下,解决这道题,没有过多优化。

http://www.lryc.cn/news/207637.html

相关文章:

  • 如何恢复u盘删除文件?2023最新分享四种方法恢复文件
  • 8.稳定性专题
  • 基于51单片机的四种波形信号发生器仿真设计(仿真+程序源码+设计说明书+讲解视频)
  • 不同网段的IP怎么互通
  • C#序列化与反序列化详解
  • 如何在k8s的Java服务镜像(Linux)中设置中文字体
  • CT 扫描的 3D 图像分类-预测肺炎的存在
  • 整合管理案例题分析
  • mysql4
  • Python深度学习实战-基于tensorflow原生代码搭建BP神经网络实现分类任务(附源码和实现效果)
  • PDF 文档处理:使用 Java 对比 PDF 找出内容差异
  • 压敏电阻有哪些原理?|深圳比创达电子EMC
  • 【计算机网络笔记】Web应用之HTTP协议(涉及HTTP连接类型和HTTP消息格式)
  • IDEA 2023.2.2 使用 Scala 编译报错 No scalac found to compile scala sources
  • C51--PWN-舵机控制
  • electron27+react18集成搭建跨平台应用|electron窗口多开
  • 【k8s】kubeadm安装k8s集群
  • 三、虚拟机的迁移和删除
  • RabbitMQ的交换机(原理及代码实现)
  • 【C++进阶】pair容器
  • Linux--进程等待
  • VMware CentOS 虚拟机扩容
  • CentOS 编译安装 nginx
  • 学习笔记-MongoDB(命令增删改查,聚合,权限管理,索引,java使用)
  • 第13期 | GPTSecurity周报
  • OpenCV学习(一)——图像读取
  • 并发编程- 线程池ForkJoinPool工作原理分析(实践)
  • 小程序原生开发中的onLoad和onShow
  • springcloud技术栈以及相关组件
  • An Early Evaluation of GPT-4V(ision)