leetcode遍历子集

 

子集

给你一个整数数组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 中的所有元素 互不相同

leetcode中的代码

class Solution {
public:
    void backtrack(vector<vector<int>>& res,vector<int>& path,vector<int>& nums,int index){
        if(index>nums.size()) return ;
        res.push_back(path);
        for(int i=index;i<nums.size();i++){
            path.push_back(nums[i]);
            backtrack(res,path,nums,i+1);
            path.pop_back();
        }
    }
    vector<vector<int>> subsets(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        vector<vector<int>> res;
        vector<int> path;
        backtrack(res,path,nums,0);
        return res;
    }
};
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn=1e5+100;
int vis[maxn],a[maxn];
int ans[maxn],cnt=0,n;
void dfs(int x){
	for(int i=1;i<=cnt;i++){
		cout<<ans[i]<<" ";
	}
	cout<<endl;
	for(int i=x;i<=n;i++){
		cnt++;
		ans[cnt]=a[i];
		dfs(i+1);
		cnt--;
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		a[i]=i;
	}
	dfs(1);
}

子集 II

给你一个整数数组nums,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。

示例 1:
输入:nums = [1,2,2]
输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]

示例 2:
输入:nums = [0]
输出:[[],[0]]

提示:
1 <= nums.length <= 10
-10 <= nums[i] <= 10

class Solution {
public:
    void backtrack(vector<vector<int>>& res,vector<int>& path,vector<int>& nums,int index){
        if(index>nums.size()) return ;
        res.push_back(path);
        for(int i=index;i<nums.size();i++){
            if(i!=index&&nums[i]==nums[i-1]) continue;
            path.push_back(nums[i]);
            backtrack(res,path,nums,i+1);
            path.pop_back();
        }
    }
    vector<vector<int>> subsetsWithDup(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        vector<vector<int>> res;
        vector<int> path;
        backtrack(res,path,nums,0);
        return res;
    }
};
posted @   lipu123  阅读(11)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2020-11-23 Gerald and Giant Chess(计数dp+组合数学)
2020-11-23 矩阵快速幂
2020-11-23 矩阵快速幂(模板)
2020-11-23 两个选与不选的dp
点击右上角即可分享
微信分享提示