zoukankan      html  css  js  c++  java
  • 明明的随机数

    题目描述

    明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了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 }
  • 相关阅读:
    js html table转json 反向生成数据源
    用命令提示符 打开 asp.net Development Server
    asp.net 'Sys'未定义 解决方案
    js form转换成Hash格式
    【转】NSIS 常用安装路径
    Linq lamdba GroupJoin外连接示例
    CDN简单了解
    获取android入口activity
    解决IE6下 li 的 float:left 自动换行
    WinForm窗口基础配置
  • 原文地址:https://www.cnblogs.com/crazybuddy/p/5307172.html
Copyright © 2011-2022 走看看