题目来源:牛客网-华为机试训练第三题(明明的随机数)
输入例子:
11 //总数量 10 20 40 32 67 40 20 89 300 400 15输出例子:
10 15 20 32 40 67 89 300 400
分析:这题涉及到java对输入数组的去重和排序,方法有如下两种
方法一:首先对输入的一组数进行排序,使相同的数相邻。然后从前往后两两比较相邻的数,将各个数存入结果数组,相同的数则跳过。代码如下:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class test3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner cin = new Scanner(System.in);
while(cin.hasNext()){
int n = cin.nextInt();
int number[] = new int[n];
for (int i = 0; i < n; i++){
number[i] = cin.nextInt();
}
Arrays.sort(number);//排序
List<Integer> result = new ArrayList<Integer>(); //用ArrayList 存储结果
result.add(number[0]);
for (int i = 1; i < number.length - 1; i++){ //去重
if(number[i] != number[i - 1]){
result.add(number[i]);
}
}
if (number[number.length - 1] != number[number.length - 2]){ //处理数组中最后一个数字
result.add(number[number.length - 1]);
}
for (int i = 0; i < result.size(); i++){ //输出结果
System.out.println(result.get(i));
}
}
}
}
import java.util.Scanner;
import java.util.TreeSet;
public class Main
{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
TreeSet<Integer> set=new TreeSet<Integer>();
int n=sc.nextInt();
if(n>0){
for(int i=0;i<n;i++){
set.add(sc.nextInt());
}
}
for(Integer i:set){
System.out.println(i);
}
}
}
}