1. hashset 数组的运用
2. arraylist 自定义排序
import java.lang.reflect.Array;
import java.math.BigInteger;
import java.net.StandardSocketOptions;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
import org.omg.CORBA.INTERNAL;
public class Main {
public static int maxn = 100 + 7;
public static int n;
public static Set<Integer>[] st = new HashSet[maxn];
public static void work(int id, int x) {
st[id].add(x);
if(x == 1) return;
if(x%2 == 0) {
work(id, x/2);
}
else {
work(id, (3*x+1)/2);
}
}
public static boolean ok(int id, int x) {
// TODO Auto-generated method stub
for(int i = 0; i < n; ++i) {
if(i == id) continue;
if(st[i].contains(x)) return false;
}
return true;
}
public static void init() {
for(int i = 0; i <= n; ++i) {
st[i] = new HashSet<>();
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
n = in.nextInt();
init();
ArrayList<Integer> a = new ArrayList<>();
for(int i = 1; i <= n; ++i) {
int x = in.nextInt();
a.add(Integer.valueOf(x));
}
for(int i = 0; i < n; ++i) {
int x = a.get(i);
work(i, x);
}
ArrayList<Integer> ans = new ArrayList<>();
for(int i = 0; i < n; ++i) {
int x = a.get(i);
if(ok(i, x)) ans.add(x);
}
ans.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
// TODO Auto-generated method stub
return o2.compareTo(o1);
}
});
for(int i = 0; i < ans.size(); ++i) {
if(i > 0) System.out.print(" ");
System.out.print(ans.get(i));
}
}
}
1102



被折叠的 条评论
为什么被折叠?



