1.独立元素
import java.io.BufferedInputStream;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(new BufferedInputStream(System.in));
int n = s.nextInt();
long[] a = new long[n];
for (int i = 0; i < n; i++) {
a[i] = s.nextLong();
}
//Set防重复
Set<Long> c = new HashSet<>();
for (long i : a) {
c.add(i);
}
Long[] b = new Long[c.size()];
c.toArray(b);
Arrays.sort(b);
System.out.print(b[b.length-1]);
//按照空格顺序输出
for (int i = 1; i < b.length; i++) {
System.out.printf(" %d",b[b.length-1-i]);
}
System.out.println();
}
}

2.字符串映射
import java.io.BufferedInputStream;
import java.util.*;
public class Main {
//映射
public static String Map(String c) {
//删掉重复元素
StringBuffer sb = new StringBuffer();
for (int i = 0; i < c.length(); i++) {
char d = c.charAt(i);
if (c.indexOf(d) == c.lastIndexOf(d)){
sb.append(d);
}
else {
int FirstPosition = c.indexOf(d);
if (FirstPosition == i) {
sb.append(d);
}
}
}
return String.valueOf(sb);
}
public static void main(String[] args) {
Scanner s = new Scanner(new BufferedInputStream(System.in));
String a = s.nextLine();
String b = s.nextLine();
int[] arr1 = new int[26];
int[] arr2 = new int[26];
//得到a、b中每个字母的个数
for(int i = 0; i < a.length(); i++) {
arr1[a.charAt(i) - 'A']++;
arr2[b.charAt(i) - 'A']++;
}
//判定两数组的对应情况
for(int i = 0; i < a.length(); i++) {
if(arr1[a.charAt(i) - 'A'] != -1) {
for(int j = 0; j < 26; j++) {
if(arr2[j] == arr1[a.charAt(i) - 'A']) {
arr1[a.charAt(i) - 'A'] = -1;
arr2[j] = -1;
break;
}
}
}
//输出NO
if(arr1[a.charAt(i) - 'A'] != -1) {
System.out.println("NO");
//正常退出,程序正常执行结束退出;1为非正常,强行退出
System.exit(0);
}
}
System.out.println("YES");
String deleteA = Map(a);
String deleteB = Map(b);
//输出映射
for (int i = 0; i <deleteA.length()-1 ; i++) {
System.out.print(deleteA.charAt(i)+"->"+deleteB.charAt(i)+" ");
}
System.out.println(deleteA.charAt(deleteA.length()-1)+"->"+deleteB.charAt(deleteB.length()-1));
s.close();
}
}

