华为机试:明明的随机数
题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
Input Param
n 输入随机数的个数
inputArray n个随机整数组成的数组
Return Value
OutputArray 输出处理后的随机整数
注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。
输入描述:
输入多行,先输入随机整数的个数,再输入相应个数的整数
输出描述:
返回多行,处理后的结果
示例1
输入
11 10 20 40 32 67 40 20 89 300 400 15
输出
10 15 20 32 40 67 89 300 400
Java: 输入的时候去重,关键在于多个case的处理,需要判定hasNext
1 import java.util.Arrays; 2 import java.util.Scanner; 3 4 public class Main { 5 6 public static void main(String[] args) { 7 Scanner sc=new Scanner(System.in); 8 while(sc.hasNext()){ 9 int n = sc.nextInt(); 10 int[] m = new int[n]; 11 int[] state = new int[1000]; 12 int count=0; 13 //输入加去重 14 for (int i = 0; i < n; i++){ 15 m[i] = sc.nextInt(); 16 state[m[i]-1]+=1; 17 if(state[m[i]-1]==2){ 18 state[m[i]-1]-=1; 19 m[i]=0; 20 i--; 21 n--; 22 count++; 23 } 24 } 25 //排序 26 Arrays.sort(m); 27 //输出只输出重复个数的后面数字,因为前面的都是0 28 for(int i = count; i<m.length; i++){ 29 System.out.println(m[i]); 30 } 31 } 32 sc.close(); 33 } 34 35 }
上述代码可以简化为:时间由107ms改进到89ms,但是空间占用由10732K增加到10764K
1 import java.util.Arrays; 2 import java.util.Scanner; 3 4 public class Main { 5 6 public static void main(String[] args) { 7 Scanner sc=new Scanner(System.in); 8 while(sc.hasNext()){ 9 int n = sc.nextInt(); 10 int temp_num = 0; 11 int[] state = new int[1000]; 12 //对输入进行记录,相当于去重加排序 13 for (int i = 0; i < n; i++){ 14 temp_num = sc.nextInt(); 15 state[temp_num-1]+=1; 16 } 17 //输出只输出非0的下标+1 18 for(int i = 0; i<state.length; i++){ 19 if(state[i]!=0){ 20 System.out.println(i+1); 21 } 22 } 23 } 24 sc.close(); 25 } 26 27 }
C++:C++就是快,占用空间小,时间2ms,空间372K。其中inttemp_num=0;放在while中的时候时间增加为3ms,空间占用496K
1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 int n; 7 int temp_num = 0; 8 while (cin>>n) 9 { 10 int m[1000] = { 0 }; 11 for (int i = 0; i < n; i++) 12 { 13 cin >> temp_num; 14 m[temp_num - 1] += 1; 15 } 16 for (int i = 0; i < 1000; i++) 17 { 18 if (m[i]!=0) 19 { 20 cout << (i + 1) << endl; 21 } 22 } 23 } 24 25 return 0; 26 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现