问题
编写一个函数,该函数接受一个唯一整数数组并返回其powerset。X的powerset P(X)是X的所有子集的集合。例如,1,2的powerset是[[],1,2,1,2]。注意,powerset中的集合不需要按任何特定的顺序排列。
My approach
我的方法非常简单,我将从一个名为master的ArrayList of ArrayList开始。我将创建一个emptyList并将其添加到主程序中。然后,我将遍历每个数字,对于每个数字,我将创建一个新的列表,就像主目录中的所有列表一样,但是将新的数字附加到其中。因此,如果我在主列表中有一个空列表,而我的num是1,我将向主列表中添加1。然后当我在2岁时,我会在主列表中添加2和1,2。
我的代码
public static void main(String args[]) {
ArrayList<Integer> inputList = new ArrayList<>();
inputList.add(1);
inputList.add(2);
inputList.add(3);
System.out.println(powerset(inputList).size());
}
public static ArrayList<ArrayList<Integer>> powerset(ArrayList<Integer> array) {
ArrayList<ArrayList<Integer>> master = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> emptyList = new ArrayList<>();
master.add(emptyList);
for(Integer num: array){
for(ArrayList<Integer> list: master){
ArrayList<Integer> toAppendList = list;
toAppendList.add(num);
master.add(toAppendList);
}
}
return master;
}问题
因为某种原因我一直在
线程"main“java.util.ConcurrentModificationException中的异常
我不知道这是如何同时进行的修改,以及如何删除它。
发布于 2019-09-11 22:10:20
您正在尝试同时迭代和修改列表,因此是不允许的。该算法也是不正确的。您可以在这里查看一个更好的实现,Obtaining a powerset of a set in Java :)
https://stackoverflow.com/questions/57897341
复制相似问题