1452. 收藏清单
通过set来做,但这里最难的是判是不是属于其他的子集。有点绕,所以这里最好搞一个方法来做
public static List<Integer> peopleIndexes(List<List<String>> favoriteCompanies) {
List<Set<String>> sets = new ArrayList<>();
for(int i=0; i<favoriteCompanies.size(); i++) {
List<String> temp = favoriteCompanies.get(i);
Set<String> set = new HashSet<>();
set.addAll(temp);
sets.add(set);
}
List<Integer> result = new ArrayList<>();
//最外层
for(int i=0; i<favoriteCompanies.size(); i++) {
List<String> l = favoriteCompanies.get(i);
boolean pass = isPass(l, i, sets);
if(pass != true) {
result.add(i);
}
}
return result;
}
public static boolean isPass(List<String> list, int index, List<Set<String>> sets) {
for (int i = 0; i < sets.size(); i++) {
Set<String> set = sets.get(i);
if(i == index) {
continue;
}
boolean isPass = true;
for (int j = 0; j < list.size(); j++) {
String str = list.get(j);
if(!set.contains(str)) {
isPass = false;
break;
}
}
if (isPass) {
return true;
}
}
return false;
}
看了别人的代码,突然set有containsAll方法
网友评论