题目描述
输入n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的整数,只保留该数第一次出现的位置,删除其余位置。
输入描述:
输入包含两行,第一行包含一个正整数n(1 ≤ n ≤ 1000),表示第二行序列中数字的个数;第二行包含n个整数(范围1~5000),用空格分隔。
输出描述:
输出为一行,按照输入的顺序输出去重之后的数字,用空格分隔。
输入
5
10 12 93 12 75
输出
10 12 93 75
import java.io.*;
import java.util.Scanner;
public class Asak {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();//输入一个数字,其实有点违背题意,但是可以做出题目
int n = Integer.parseInt(s);//转化为数字
StringBuilder sb = new StringBuilder();//创建一个可变字符串
String[] str = br.readLine().split(" ");//第二行包含n个整数(范围1~5000),用空格分隔。
int[] arr = new int[str.length];//需要将str转换成int 型
for(int i = 0; i < str.length; i++){//转化
arr[i] = Integer.parseInt(str[i]);
}
for(int i = 0; i < str.length - 1; i++){
for(int j = i + 1; j < str.length; j++){
if(arr[i] == arr[j]){//查找是否有相同的数字,如果相同则将相同的后一个赋值为0
arr[j] = 0;
}
}
}
for(int i = 0; i < str.length; i++){
if(arr[i] != 0){//利用StringBuilder的特性append将不为0的数组和第一个数字加到sb的StringBuilder中
sb.append(arr[i]+" ");
}
}
System.out.print(sb);
}
}
import java.util.*;
public class Asak {
public static void main(String[] args) {
Set<Integer> set = new HashSet<>();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; ++i)
arr[i] = sc.nextInt();
for (int i = 0; i < n; ++i) {
if (set.contains(arr[i])) {
continue;
}
System.out.print(arr[i] + " ");
set.add(arr[i]);
}
}
}