HW代碼題-明明的隨機數

題目描述:

明明想在學校中請一些同學一起做一項問卷調查,爲了實驗的客觀性,他先用計算機生成了N個1到1000之間的隨機整數(N≤1000),對於其中重複的數字,只保留一個,把其餘相同的數去掉,不同的數對應着不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成“去重”與“排序”的工作(同一個測試用例裏可能會有多組數據,希望大家能正確處理)。

輸入:

n               輸入隨機數的個數

inputArray      n個隨機整數組成的數組

輸出:

OutputArray    輸出處理後的隨機整數

思路:題目的意思是對一組數進行去重和排列。我自己想的是先使用HashMap去重,然後在進行排序,結果最近連HashMap的創建都不會了。。。。。看了網上大神的代碼

代碼1來源:https://blog.csdn.net/qq_34594236/article/details/52425632

思路是先進行排序,再輸出和前一個數不同的數。

代碼2來源與牛客網中的大神評論

這個需要注意while(sc.hasNext()),這個可能是輸入好幾組的數,就是要輸入好幾次,需要對每次輸入的數據進行去重和排序處理。

這幾個題的話思路還是不復雜的,但是一是關於輸入不會寫,二是現在簡單的也寫不來。。。。。

代碼1:

import java.util.Arrays;
import java.util.Scanner;
 
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循環進行去重
            for(int i=0 ;i<n ;i++){
                if(i==0||arr[i]!=arr[i-1]){
                    System.out.println(arr[i]);
                }
            }
             
        }
         
    }
 
}
 

代碼2:

import java.util.Scanner;
import java.util.TreeSet;
 
public class Main
{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
             
            TreeSet<Integer> set=new TreeSet<Integer>();//TreeSet內部沒有重複元素,並且自然排序是升序排序
            int n=sc.nextInt();
            if(n>0){
                for(int i=0;i<n;i++){
                    set.add(sc.nextInt());
                }
            }
            for(Integer i:set){
                System.out.println(i);
            }
        }
    }
}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章