Subset题目描述:给你一个整数数组nums,数组中的元素互不相同。返回此数组的所有可能子集(幂集)。解决方案集不能包含重复的子集。您可以按任何顺序返回解决方案集。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:dfs(深度优先遍历)声明两个全局变量分别为结果集(result)和当前路径(path),加入深度优先遍历的方式。该方法的具体逻辑如下:当k=0时,表示当前路径中已经有k个数字,表示当前路径满足条件,加入到结果集中;然后从1开始遍历数字,递归调用dfs方法,调用后从路径中移除当前路径的最后一个数字。上面的处理和LeetCode-077-组合的逻辑完全一样,不同的是这道题需要遍历元素个数(0到n之间)所有可能的组合,然后添加到结果集中。importjava.util.ArrayList;importjava.util.List;publicclassLeetCode_078{/***结果集*/privatestaticList>result=newArrayList<>();/***当前路径*/privatestaticList
>subsets(int[]nums){result.add(newArrayList<>());for(inti=1;i<=nums.length;i++){path=newArrayList<>();dfs(0,nums,i);}返回结果;}/***深度优先遍历**@paramindex路径起始位置*@paramnums原数组*@paramk路径剩余值*/privatestaticvoiddfs(intindex,int[]nums,intk){if(k==0){/***当前有k个值,添加到结果集中*/result.add(newArrayList<>(path));返回;}for(inti=index;i
