数组不重复子集
子集
数组子集,即包含有限个数组元素的集合。
eg. [1,2,3]的子集,[[1],[2],[3],[1,2],[1,3],[2,3],[1,2,3]]
思路
我们之前采用【回溯算法】计算指定长度的数组子集组合。
eg. 在数组 [ 1 , 2 , 3 , 4 , 5 ] [1,2,3,4,5] [1,2,3,4,5]找长度为【3】的数组子集,我们首先确定前两个数,【1,2】然后增加【3】则满足数组长度为3,将这个结果增加到答案中,同时return, 递归弹栈并删除【3】返回上一个状态【1,2】,继续遍历增加【4】,【1,2,4】同样增加到数组中,依次遍历,能够取得所有长度为【3】的子集。
我们只需要循环取长度为 【1~n】(n所给数组长度)的数组子集,即可得到所有数组的子集。
注意,我们需要确保子集不重复,这一点我们只需要保证数组有序就可以实现。
代码实现
import java.util.*;
public class Test{
static ArrayList<ArrayList<Integer>> ans;
public static void func