老师给了小乐乐一个正整数序列,要求小乐乐把这个序列去重后按从小到大排序。但是老师给出的序列太长了,小乐乐没办法耐心的去重并排序,请你帮助他。
老师给了小乐乐一个正整数序列,要求小乐乐把这个序列去重后按从小到大排序。但是老师给出的序列太长了,小乐乐没办法耐心的去重并排序,请你帮助他。
第一行包含一个正整数n,表示老师给出的序列有n个数。接下来有n行,每行一个正整数k,为序列中每一个元素的值。(1 ≤ n ≤ 105,1 ≤ k ≤ n)
输出一行,为去重排序后的序列,每个数后面有一个空格。
4 2 2 1 1
1 2
5 5 4 3 2 1
1 2 3 4 5
import java.util.Scanner; import java.util.Set; import java.util.TreeSet; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); Set arr = new TreeSet(); for (int i = 0; i < n; i++) { arr.add(in.nextInt()); } for(Object x:arr){ System.out.print(x+" "); } } }
import java.util.Scanner; import java.util.Arrays; public class Main { //先排序 后去重输出 public static void main(String[] args) { Scanner scan = new Scanner(System.in); int[] arr = new int[scan.nextInt()]; for (int i = 0; i < arr.length; i++) { arr[i] = scan.nextInt(); } Arrays.sort(arr); int lastNum = -1; for (int i = 0; i < arr.length; i++) { if (arr[i] == lastNum) { continue; } lastNum = arr[i]; System.out.print(arr[i] + " "); } } }
import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner input=new Scanner(System.in); int n=input.nextInt(); HashSet<Integer> set=new HashSet<Integer>(); for(int i=0;i<n;i++) { set.add(input.nextInt()); } List<Integer> list=new ArrayList<Integer>(set); Collections.sort(list); for(Integer l:list) System.out.print(l+" "); } }
定义一个集合,输入元素后,集合过滤去重,将过滤后的元素放到list中,再利用Collections.sort(list);
输出。一个小的注意事项:HashSet的迭代器在输出时“不保证有序”,但也不是“保证无序”。也就是说,输出时有序也是允许的,但不保证实现的时候每次输出都是有序。
import java.util.*; public class Main{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int num[] = new int[n]; for(int i =0;i<n;i++){ num[i]=sc.nextInt(); } LinkedHashSet<Integer> set = new LinkedHashSet<>(); Arrays.sort(num); for(int i =0;i<n;i++){ set.add(num[i]); } for(int a:set){ System.out.print(a+" "); } } }