dfs(自用-子集)

张开发
2026/4/11 16:16:14 15 分钟阅读

分享文章

dfs(自用-子集)
老规矩依旧以题代练。幂集。编写一种方法返回某集合的所有子集。集合中不包含重复的元素。说明解集不能包含重复的子集。示例输入nums [1,2,3]输出[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]核心代码如下class Solution { private: vectorvectorint ans; int n; public: void dfs(int step,vectorintpath,vectorintnums){ if(stepn){ ans.push_back(path); return; } dfs(step1,path,nums); path.push_back(nums[step]); dfs(step1,path,nums); path.pop_back(); } vectorvectorint subsets(vectorint nums) { nnums.size(); vectorint path; dfs(0,path,nums); return ans; } };下面用一张图把以[1,2,3]为例的完整dfs算法的过程手绘出来以便理解。因为传递值的时候有引用所以整个过程共用一个path--所指是传入ans的内容

更多文章