題目描述:
明明想在學校中請一些同學一起做一項問卷調查,爲了實驗的客觀性,他先用計算機生成了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);
}
}
}
}