【Java 数据结构及算法实战】系列 017:HJ3 明明的随机数
描述
明明生成了N个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。
数据范围: 1≤n≤1000 ,输入的数字大小满足1≤val≤500
输入描述:第一行先输入随机整数的个数 N 。 接下来的 N 行每行输入一个整数,代表明明生成的随机数。
输出描述:输出多行,表示输入数据处理后的结果
解法
此题考查Set结构的用法以及排序。
- 第一行先输入随机整数的个数 N 。
- 接下来的 N 行每行输入一个整数,代表明明生成的随机数。
- 随机数存入Set结构,实现去重。
- Set结构转为List,并排序。
- 输出排序后的结果。
/*
* Copyright (c) waylau.com, 2022. All rights reserved.
*/
package com.waylau.nowcoder.exam.oj.huawei;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
/**
* HJ3 明明的随机数. 描述:明明生成了N个1到500之间的随机整数。请你删去其中重复的数字,
* 即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。 数据范围: 1≤n≤1000
* ,输入的数字大小满足1≤val≤500 输入描述:第一行先输入随机整数的个数 N 。 接下来的 N 行每行输入一个整数,代表明明生成的随机数。
* 输出描述:输出多行,表示输入数据处理后的结果
*
* @author Way Lau
* @since 2022-08-05
*/
public class HJ3RandomNumbers {
public static void main(String[] args) {
// 输入一行,代表随机整数的个数 N。
Scanner sc = new Scanner(System.in);
// 全部转为小写
int num = sc.nextInt();
// 构造一个Set结构,实现数字去重
Set<Integer> set = new HashSet<>();
// 对输入数字进行遍历,将每遍历一个数字,就将该字符记录到Set中
for (int i = 0; i < num; i++) {
int randomNumer = sc.nextInt();
set.add(randomNumer);
}
// Set结构转为List,并排序。
List<Integer> sortedNumbers = new ArrayList<Integer>(set);
sortedNumbers.sort(Comparator.naturalOrder());
// 遍历输出每个整数
sortedNumbers.forEach(System.out::println);
// 关闭资源
sc.close();
}
}
解法2
去重、排序,这不就是TreeSet的数据结构嘛!因此,可以直接用TreeSet解决。
- 第一行先输入随机整数的个数 N 。
- 接下来的 N 行每行输入一个整数,代表明明生成的随机数。
- 随机数存入TreeSet结构,实现去重、排序。
- 输出排序后的结果。
代码如下:
/*
* Copyright (c) waylau.com, 2022. All rights reserved.
*/
package com.waylau.nowcoder.exam.oj.huawei;
import java.util.Scanner;
import java.util.TreeSet;
/**
* HJ3 明明的随机数. 描述:明明生成了N个1到500之间的随机整数。请你删去其中重复的数字,
* 即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。 数据范围: 1≤n≤1000
* ,输入的数字大小满足1≤val≤500 输入描述:第一行先输入随机整数的个数 N 。 接下来的 N 行每行输入一个整数,代表明明生成的随机数。
* 输出描述:输出多行,表示输入数据处理后的结果
*
* @author Way Lau
* @since 2022-08-05
*/
public class HJ3RandomNumbers2 {
public static void main(String[] args) {
// 输入一行,代表随机整数的个数 N。
Scanner sc = new Scanner(System.in);
// 全部转为小写
int num = sc.nextInt();
// 构造一个TreeSet结构,实现数字去重、排序
TreeSet<Integer> set = new TreeSet<>();
// 对输入数字进行遍历,将每遍历一个数字,就将该字符记录到Set中
for (int i = 0; i < num; i++) {
int randomNumer = sc.nextInt();
set.add(randomNumer);
}
// 遍历输出每个整数
set.forEach(System.out::println);
// 关闭资源
sc.close();
}
}
运行程序,输出如下:
3
2
2
1
1
2
参考引用
- 本系列归档至https://github.com/waylau/nowcoder-exam-oj
- 《Java 数据结构及算法实战》:https://github.com/waylau/java-data-structures-and-algorithms-in-action
- 《数据结构和算法基础(Java 语言实现)》(柳伟卫著,北京大学出版社出版):《数据结构和算法基础(Java语言实现)》(柳伟卫)【摘要 书评 试读】- 京东图书
【Java 数据结构及算法实战】系列 017:HJ3 明明的随机数相关推荐
- 【Java数据结构及算法实战】系列002:算法的四种描述方式
本节是<Java数据结构及算法实战>系列的第2节,主要介绍描述算法的常用的4种方式. 要定义一个算法,我们可以用自然语言.流程图.伪代码的方式描述解决某个问题的过程或是编写一段程序来实现这 ...
- Java 数据结构与算法系列之冒泡排序
一.前言 相信大部分同学都已经学过数据结构与算法这门课了,并且我们可能都会发现一个现象就是我们所学过的数据结构与算法类的书籍基本都是使用 C 语言来写的,好像没见过使用 Java 写的数据结构与算法. ...
- Java数据结构和算法(一)——简介
本系列博客我们将学习数据结构和算法,为什么要学习数据结构和算法,这里我举个简单的例子. 编程好比是一辆汽车,而数据结构和算法是汽车内部的变速箱.一个开车的人不懂变速箱的原理也是能开车的,同理一个不懂数 ...
- 书籍推荐:《Java数据结构与算法》
Data Structures and Algorithms in Java (2nd Edition) 没错,这本书的代码都是用Java写的. 现在市面上关于数据结构和算法的书的描述语言一般是C.C ...
- Java 数据结构和算法 - 递归
Java 数据结构和算法 - 递归 什么是递归 背景:数学归纳法证明 基本递归 printing numbers in any base 它为什么有效 如何工作 递归太多是危险的 树 数值应用 模幂运 ...
- 【直播回顾】云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第19讲):Java Spring Cloud微服务架构模式与开发实战...
主讲人:徐雷(云栖社区特邀Java专家) 徐雷,花名:徐雷frank:资深架构师,MongoDB中文社区联席主席,吉林大学计算机学士,上海交通大学硕士.从事了 10年+开发工作,专注于分布式架构,Ja ...
- Java数据结构与算法——树(基本概念,很重要)
声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 有网友私信我,期待我的下一篇数据结构.非常荣幸文章被认可,也非常感谢你们的监督. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督 ...
- Java数据结构与算法——插入排序
声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本篇文章介绍排序算法中插入排序算法,包括插入排序的思路,适用场景,性能分析,ja ...
- Java数据结构和算法(六)——前缀、中缀、后缀表达式
前面我们介绍了三种数据结构,第一种数组主要用作数据存储,但是后面的两种栈和队列我们说主要作为程序功能实现的辅助工具,其中在介绍栈时我们知道栈可以用来做单词逆序,匹配关键字符等等,那它还有别的什么功能吗 ...
最新文章
- 让你上瘾的网易云音乐推荐算法,用Word2vec就可以实现
- Python语言学习之图表可视化:python语言中可视化工具包的简介、安装、使用方法、经典案例之详细攻略
- 全球与中国丙烷脱氢制丙烯市场发展形势与前景规划分析报告2022-2028年版
- 科大星云诗社动态20220114
- ITK:创建样本测量列表
- windows-oracle下载安装,简单的启动使用。
- qchart折现图_Qt开发技术:QCharts(二)QCharts折线图介绍、Demo以及代码详解
- 拯救你的年终报告!巧用可视化图表秀出年终业绩
- 超越MobileNet v3!华为诺亚、北大提出GhostNet​,使用线性变换生成特征图
- 漫画解析Linux内核
- 工程师软技能4:找出你的短板
- sql server 更新语句
- python中常见的三种选择结构_循序渐进学Python:三种选择语句
- mysql当前时间的本月_mysql 获得当前月1号的日期 和 0点日期方法
- CSS3 文字边框 -webkit-text-stroke
- 【干货】热力元素分析看板实例
- patterns in java_Patterns-in-Java
- WinEdit编辑器中中文乱码
- “生成能够被扫描枪正常扫描出中文的二维码”
- 持续集成在Hexo自动化部署上的实践