明明的随机数

题目描述

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完 成“去重”与“排序”的工作。

输入描述:

输入多行,先输入随机整数的个数,在输入相应个数的整数


输出描述:

返回多行,处理后的结果

 

输入例子:
11
10
20
40
32
67
40
20
89
300
400
15

 

输出例子:
10
15
20
32
40
67
89
300
400

思路1:最简单与最直接的方法,使用java集合中的TreeSet集合,其中存储的元素默认为有序而且无重复。

 1 import java.util.Scanner;
 2 import java.util.TreeSet;
 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              
10             TreeSet<Integer> set=new TreeSet<Integer>();
11             int n=sc.nextInt();
12             if(n>0){
13                 for(int i=0;i<n;i++){
14                     set.add(sc.nextInt());
15                 }
16             }
17             for(Integer i:set){
18                 System.out.println(i);
19             }
20         }
21     }
22 }

 

思路2:参考别人,看代码即可

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         Scanner sr = new Scanner(System.in);
 6 
 7         while (sr.hasNext()) {
 8             int n = sr.nextInt();
 9             int[] a = new int[n];
10             for (int i = 0; i < n; i++) {
11                 a[i] = sr.nextInt();
12             }
13             int[] c = dupDele(a);
14 
15             for (int i = 0; i < 1000; i++) {
16                 if (c[i] == 1) {
17                     System.out.println(i);
18                 }
19             }
20         }
21     }
22 
23     public static int[] dupDele(int[] a) {//进行去重
24         int[] b = new int[1000];
25         for (int i = 0; i < 1000; i++) {
26             b[i] = 0;
27         }
28         for (int i = 0; i < a.length; i++) {
29             b[a[i]] = 1;
30         }
31         return b;
32     }
33 }

 

思路3:先用List存储元素,然后利用COllections类的sort()方法进行排序,然后通过比较拿到重复元素的下表,最后利用List的remove()方法删除List中的重复元素

 1 import java.util.ArrayList;
 2 import java.util.Collections;
 3 import java.util.List;
 4 import java.util.Scanner;
 5 
 6 public class Test{
 7    public static void main(String[] args){
 8        Scanner sc =new Scanner(System.in);
 9        List<Integer> li = new ArrayList<>();
10        while(sc.hasNextInt()){
11            int n = sc.nextInt();
12            for(int i=0;i<n;i++){
13                li.add(sc.nextInt());
14            }
15            Collections.sort(li);
16            List<Integer> tem = new ArrayList<>();
17            for(int i=1;i<n;i++){
18                if(li.get(i-1)==li.get(i)){
19                    tem.add(i);
20                }
21            }
22            for(int i =0;i<tem.size();i++){
23                li.remove((int)tem.get(i));//这里是删除指定位置的元素;
//
不能写成li.remove(tem.get(i));因为ArrayList有两个remove方法,一个是根据位置删除元素,
//另一个是指定删除元素;具体见API
24 } 25 for(Integer i : li) 26 System.out.println(i); 27 28 } 29 } 30 }

 

posted @ 2016-03-22 16:30  crazybuddy  阅读(556)  评论(0编辑  收藏  举报