58做网站吗,中国今天新闻最新消息,做网站需不需要营业执照,网页编辑软件免费版问题#xff1a; 给定一个整数数组 nums#xff0c;数组中的元素互不相同。返回该数组所有可能的子集#xff08;幂集#xff09;。解集不能包含重复的子集。可以按任意顺序返回解集。
示例 1#xff1a;
输入#xff1a;nums [1,2,3]
输出#xff1a;[[],[1],[2],[…问题 给定一个整数数组 nums数组中的元素互不相同。返回该数组所有可能的子集幂集。解集不能包含重复的子集。可以按任意顺序返回解集。
示例 1
输入nums [1,2,3]
输出[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
示例 2
输入nums [0]
输出[[],[0]]
提示
1 nums.length 10
-10 nums[i] 10
nums 中的所有元素 互不相同 解答思路
以下是使用 Java 实现求子集的代码
import java.util.ArrayList;import java.util.List;public class Subsets {public static ListListInteger subsets(int[] nums) {ListListInteger result new ArrayList();backtrack(result, new ArrayList(), nums, 0);return result;}public static void backtrack(ListListInteger result, ListInteger subset, int[] nums, int start) {result.add(new ArrayList(subset));for (int i start; i nums.length; i) {subset.add(nums[i]);backtrack(result, subset, nums, i 1);subset.remove(subset.size() - 1);}}public static void main(String[] args) {int[] nums {1, 2, 3};ListListInteger result subsets(nums);for (ListInteger subset : result) {System.out.println(subset);}}} 在上述代码中我们使用回溯法来求解子集。在backtrack方法中我们首先将当前的子集加入到结果集中然后通过循环遍历数组对于每个元素我们将其加入到子集中并递归调用backtrack方法将当前位置加 1即从下一个元素开始继续求解子集。在递归结束后我们将当前元素从子集中移除以便回溯到上一层。在main方法中我们创建了一个示例数组并调用subsets方法来求解子集最后打印出所有的子集。
(文章为作者在学习java过程中的一些个人体会总结和借鉴如有不当、错误的地方请各位大佬批评指正定当努力改正如有侵权请联系作者删帖。)