ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

明明的随机数

2021-12-07 22:59:16  阅读:181  来源: 互联网

标签:arr Scanner 明明 int util 随机数 sc import


https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0?tpId=37&tqId=21226&tPage=1&rp=&ru=%2Fta%2Fhuawei&qru=%2Fta%2Fhuawei%2Fquestion-ranking

一、题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。

二、代码实现
1、使用数组

只用大小与输入规模相同的数组:

import java.util.Scanner;
import java.util.Arrays;
public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            //输入
            int n = sc.nextInt();
            int[] arr = new int[n];
            for (int i=0; i<n; i++) {
                arr[i] = sc.nextInt();
            }
            
            //排序
            Arrays.sort(arr);
 
            //去重 并 输出
            for (int i=0; i<arr.length; i++) {
                //对于第一个数字,直接输出; 对于i=2..len-1,则当前一个元素不与自己重复时输出
                if (i == 0 || arr[i] != arr[i-1]) {
                    System.out.println(arr[i]);
                }
            }
            
        }
        
    }
       
}
基于计数排序的思想:

关于计数排序可以参考以下链接:

https://www.cnblogs.com/bqwzx/p/11029264.html

https://baike.baidu.com/item/%E8%AE%A1%E6%95%B0%E6%8E%92%E5%BA%8F

由于输入随机数的取值范围为[1, 1000],于是申请一块空间为1001的数组arr,对于输入元素num,让arr[num] = 1。

import java.util.Scanner;
import java.util.Arrays;
public class Main {
   
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[1001];
        while (sc.hasNext()) {
            int n = sc.nextInt();
            //int[] arr = new int[1001];
            //
            Arrays.fill(arr, 0);
 
            for (int i=0; i<n; i++) {
                int num = sc.nextInt();
                //if (arr[num] == 0) {
                    arr[num] = 1;
                //}
            }
 
            for (int i=0; i<1001; i++) {
                if (arr[i] == 1) {
                    System.out.println(i);
                }
            }
        }
        sc.close();
    }
    
}
2、使用集合

使用ArrayList:

输入时不插入已经存在的元素,也就是实现去重;遍历完成后,对集合进行排序

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;
public class Main {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<Integer> list = new ArrayList<>();
        while (sc.hasNext()) {
            list.clear();
            
            int n = sc.nextInt();
            //输入时就去重
            for (int i=0; i<n; i++) {
                int num = sc.nextInt();
                if (!list.contains(num)) {
                    list.add(num);
                }
            }
            
            //排序
            Collections.sort(list);
            
            for (int i=0; i<list.size(); i++) {
                System.out.println(list.get(i));
            }
        }
    }
    
}
使用TreeSet:

利用TreeSet自带的按值排序插入、去重特性

import java.util.Scanner;
import java.util.TreeSet;
import java.util.Set;
import java.util.Iterator;
public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //Set<Integer> set = new HashSet<>();
        //之所以不用HashSet,是因为HashSet没有排序方法,如ArrayList就有Collections.sort(ArrayList);
        //
        Set<Integer> set = new TreeSet<>();
        while (sc.hasNext()) {
            set.clear();
            
            int n = sc.nextInt();
            //输入时就去重,利用集合自身的去重特性;输入时就排序,利用TreeSet插入时维护值有序的特性
            for (int i=0; i<n; i++) {
                set.add(sc.nextInt());
            }
            
            Iterator<Integer> it = set.iterator();
            while (it.hasNext()) {
                System.out.println(it.next());
            }
        }
    }
  
}
————————————————
版权声明:本文为CSDN博主「JeremyChan1887」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_30973431/article/details/103948883

标签:arr,Scanner,明明,int,util,随机数,sc,import
来源: https://blog.csdn.net/zonghuijie123/article/details/121780393

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有