LeetCode 78 子集
阿新 • • 發佈:2020-09-20
LeetCode 78 子集
問題描述
給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集(冪集)。
說明:解集不能包含重複的子集。
深度優先遍歷 + 回溯
執行用時:1 ms, 在所有 Java 提交中擊敗了99.39%的使用者
記憶體消耗:39 MB, 在所有 Java 提交中擊敗了61.47%的使用者
class Solution { private List<List<Integer>> results; //深度優先遍歷DFS public List<List<Integer>> subsets(int[] nums) { //初始化結果集合 results = new ArrayList<List<Integer>>(); results.add(new ArrayList<Integer>()); if(nums==null || nums.length==0) { return results; } dfs(nums, -1, new ArrayList<Integer>()); return results; } public void dfs(int[] nums, int curr, List<Integer> result) { if(curr>=0 && curr<=nums.length-1) { results.add(new ArrayList<Integer>(result)); if(curr==nums.length-1) { return; } } //回溯 for(int next=curr+1; next<nums.length; next++) { result.add(nums[next]); dfs(nums, next, result); result.remove(result.size()-1); } } }