LeetCode 78 子集
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);
}
}
}
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步