题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 NN 个 1 到 1000 之间的随机整数(N \leq 100N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入描述
第 1 行为 1 个正整数,表示所生成的随机数的个数:NN。
第 2 行有 NN 个用空格隔开的正整数,为所产生的随机数。
输出描述
输出 2 行,第 1 行为 1 个正整数 MM,表示不相同的随机数的个数。
第 2 行为 MM 个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
输入输出样例
示例 1
输入
10
20 40 32 67 40 20 89 300 400 15
输出
8
15 20 32 40 67 89 300 400
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
解法01
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
int N = scan.nextInt();
int[] result = new int[1001];
int[] arr= new int[N];
int index;
for (int i = 0; i < N; i++) {
index=scan.nextInt();
result[index]=1;
}
index=0;
for (int i = 0; i < 1001; i++) {
if(result[i]==1){
arr[index]=i;
index++;
}
}
System.out.println(index);
for (int i = 0; i < index; i++) {
System.out.print(arr[i]+" ");
}
scan.close();
}
}
解法02
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
int N=scan.nextInt();
int[] arr0 = new int[N];
int[] arr =new int[N];
int x, index;
boolean flag=true;
for (int i = 0; i < N; i++) {
arr0[i]=scan.nextInt();
}
for (int i = 0; i < N-1; i++) {
for (int j = 0; j < N-i-1; j++) {
if(arr0[j]>arr0[j+1]){
x=arr0[j];
arr0[j]=arr0[j+1];
arr0[j+1]=x;
flag=false;
}
}
if(flag){
break;
}else{
flag=true;
}
}
index=0;
arr[index]=arr0[0];
for (int i = 1; i < N; i++) {
if(arr0[i]!=arr0[i-1]){
index++;
arr[index]=arr0[i];
}
}
System.out.println(index+1);
for (int i = 0; i <= index; i++) {
System.out.print(arr[i]+" ");
}
scan.close();
}
}
解法03
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
int N = scan.nextInt();
TreeSet treeSet = new TreeSet();
for (int i = 0; i < N; i++) {
treeSet.add(scan.nextInt());
}
System.out.println(treeSet.size());
for (Object o : treeSet) {
System.out.print(o+" ");
}
scan.close();
}
}
该博客介绍了三种不同的Java实现方式来处理数组中的重复数值并进行排序。方法包括使用哈希表去重、冒泡排序结合去重以及使用TreeSet。这些方法分别展示了如何在Java中有效地处理数据集,确保唯一性和排序。
2460

被折叠的 条评论
为什么被折叠?



