• leetcode78 子集(Medium)


    题目来源:leetcode78 子集

    题目描述:

    给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。

    说明:解集不能包含重复的子集。

    示例:

    输入: nums = [1,2,3]
    输出:
    [
    [3],
      [1],
      [2],
      [1,2,3],
      [1,3],
      [2,3],
      [1,2],
      []
    ]

    解题思路:

    参考解题思路:题解

    方法一:递归

    class Solution {
    public:
        vector<vector<int>> subsets(vector<int>& nums) {
            if(nums.empty()) return{{}};
            int n=nums.back();
            nums.pop_back();
            vector<vector<int>> ans=subsets(nums);
            int size=ans.size();
            for(int i=0;i<size;i++){
                ans.push_back(ans[i]);
                ans.back().push_back(n);
            }
            return ans;
        }
    };
    

    方法二:回溯

    class Solution {
    public:
        vector<vector<int>> ans;
        vector<vector<int>> subsets(vector<int>& nums) {
            vector<int> track;
            backtrack(nums,0,track);
            return ans;
        }
        void backtrack(vector<int>& nums,int start,vector<int> &track){
            ans.push_back(track);
            for(int i=start;i<nums.size();i++){
                track.push_back(nums[i]);
                backtrack(nums,i+1,track);
                track.pop_back();
            }
        }
    };
    
  • 相关阅读:
    FR #3题解
    L3-005. 垃圾箱分布
    L2-004. 这是二叉搜索树吗?
    L2-002. 链表去重
    L1-009. N个数求和
    L3-003. 社交集群
    L3-004. 肿瘤诊断
    L2-001. 紧急救援
    L3-002. 堆栈
    L2-007. 家庭房产
  • 原文地址:https://www.cnblogs.com/yjcoding/p/13268559.html
Copyright © 2020-2023  润新知