牛客 HJ3 明明的随机数

Posted 顧棟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客 HJ3 明明的随机数相关的知识,希望对你有一定的参考价值。

描述
明明生成了NN个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。

数据范围: 1 ≤ n ≤ 1000 1 \\le n \\le 1000 1n1000 ,输入的数字大小满足 1 ≤ v a l ≤ 500 1 \\le val \\le 500 1val500

输入描述:
第一行先输入随机整数的个数 N 。 接下来的 N 行每行输入一个整数,代表明明生成的随机数。 具体格式可以参考下面的"示例"。

输出描述:
输出多行,表示输入数据处理后的结果

示例1

输入:
3
2
2
1

输出:
1
2

说明:
输入解释:
第一个数字是3,也即这个小样例的N=3,说明用计算机生成了31500之间的随机整数,接下来每行一个随机数字,共3行,也即这3个随机数字为:
2
2
1
所以样例的输出为:
1
2     

java实现

第一种解法:直接通过TreeSet来实现排序和去重

第二种解法:借助通过数组来实现排序和去重

package nowcoder;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.TreeSet;

public class HJ003 
    public static void main(String[] args) throws IOException 
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 0-1000是1001个数
        boolean[] stu = new boolean[1001];
        String nLine = br.readLine();
        StringBuilder sb = new StringBuilder();
        if (null != nLine) 
            int n = Integer.parseInt(nLine);
            for (int i = 0; i < n; i++) 
                stu[Integer.parseInt(br.readLine())] = true;
            
            for (int i = 0; i < 1001; i++) 
                if (stu[i]) 
                    sb.append(i).append("\\n");
                
            
            sb.deleteCharAt(sb.length() - 1);
            System.out.println(sb);
        

//         TreeSet set = new TreeSet();
//         String s = br.readLine();
//         while (null != (s = br.readLine())) 
//             set.add(Integer.parseInt(s));
//         
//         Iterator t = set.iterator();
//         while (t.hasNext()) 
//             System.out.println(t.next());
//         
    

以上是关于牛客 HJ3 明明的随机数的主要内容,如果未能解决你的问题,请参考以下文章

华为机试HJ3:明明的随机数

Java 数据结构及算法实战系列 017:HJ3 明明的随机数

Java 数据结构及算法实战系列 017:HJ3 明明的随机数

牛客网华为机试训练第3题 明明的随机数

牛客网:连续子数组的最大和(动态递归解法)

贪心算法之取手套问题(牛客)