题解 | 明明的随机数
明明的随机数
https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); if (in.hasNextInt()) { int n = in.nextInt(); } // 注意 hasNext 和 hasNextLine 的区别 boolean[] map = new boolean[500]; // 一共500个数字,true表示输入过这个数(数组下标 + 1) while (in.hasNextInt()) { // 注意 while 处理多个 case int num = in.nextInt(); if (map[num - 1] == false) { map[num - 1] = true; } } for (int i = 0; i < map.length; i++) { if (map[i]) { System.out.println(i + 1); } } } }
将排序、去重简化为去重
思路:
题目提到所有待去重排序的数字为[1,500]的整数,数组下标[0,499]刚好可以对应。
可以用一个大小500的boolean数组 map 表示 下标+1 的数是否输入过;只需判断输入的数字对应的数组位置是否为false,如果false,则赋值为true;最后依次遍历数组,值为true则输出 下标+1