题解 | #明明的随机数#
明明的随机数
http://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0
package huawei_computertest;
import java.util.Scanner;
/*
描述
明明生成了NN个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。
数据范围: 1≤n≤1000 ,输入的数字大小满足 1≤val≤500
输入描述:
第一行先输入随机整数的个数 N 。 接下来的 N 行每行输入一个整数,代表明明生成的随机数。 具体格式可以参考下面的"示例"。
输出描述:
输出多行,表示输入数据处理后的结果
*/
public class HJ3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();// 输入随机整数的个数 N
int[] ints = new int[num]; // 定义数组存储明明生成的随机数
for (int i = 0; i < num; i++) {
int numVal = scanner.nextInt();
ints[i] = numVal;// 生成随机数并存入数组
}
int index = -100;// 标记
// 对数组元素去重
for (int i = 0; i < ints.length; i++) {
for (int j = i + 1; j < ints.length; j++) {// 前面的比较过了,只比后面的
if (ints[i] == ints[j]) {// 把相同的做个标记,把后面的那个置于标记
ints[j] = index;
}
}
}
// 只要有相同元素,都已经置于index
int count = 0;
for (int i = 0; i < ints.length; i++) {// 遍历数组,把index的个数计算出
if (ints[i] == index) {
count++;
}
}
// 定义新数组(根据count长度)
int[] ints1 = new int[num - count];
for (int i = 0, j = 0; i < ints.length; i++) {// 把不是index 的存储进新数组
if (ints[i] != index) {
ints1[j] = ints[i];
j++;
}
}
// 从小到大排序
int temp;
for (int i = 0; i < ints1.length; i++) {
for (int j = i + 1; j < ints1.length; j++) {
if (ints1[i] > ints1[j]) {
temp = ints1[i];
ints1[i] = ints1[j];
ints1[j] = temp;
}
}
}
// 遍历新数组输出。
for (int i = 0; i < ints1.length; i++) {
System.out.println(ints1[i]);
}
}
}