zoukankan      html  css  js  c++  java
  • leetcode78.子集

    编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。

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

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

    输出:

    [
      [3],
      [1],
      [2],
      [1,2,3],
      [1,3],
      [2,3],
      [1,2],
      []
    ]
    方法一(组合问题常用模板):
    class Solution {
        vector<vector<int>> res;
        vector<int> tmp;
    public:
        vector<vector<int>> subsets(vector<int>& nums) {
            generate(0, nums);
            return res;
        }
        
        void generate(int i, vector<int>& nums) {
            res.push_back(tmp);
            
            for(int j = i; j < nums.size(); ++j) {
                tmp.push_back(nums[j]);
                generate(j+1, nums);
                tmp.erase(tmp.end()-1);
            }
        }
    };

    方法二:

    思路:对于[1,2,3]集合,按顺序遍历每个元素,每一步只需考虑加还是不加当前元素。

    class Solution {
        vector<int> tmp;
        vector<vector<int>> res;
    public:
        void backtrack(int i, vector<int>& nums)
        {
            if(i >= nums.size()) return;
            tmp.push_back(nums[i]); //加入当前元素
            res.push_back(tmp);
            backtrack(i+1, nums);
            tmp.pop_back();     //不加入当前元素
            backtrack(i+1, nums);
        }
        vector<vector<int>> subsets(vector<int>& nums)
        {
            res.push_back(tmp);//先把空集加进去
            backtrack(0, nums);
            
            return res;
        }
    };
  • 相关阅读:
    sudo 做不到的事
    Oracle 用户操作表权限
    CentOS7.2 使用Shell安装Oracle12c
    package-cleanup
    glibc-commons 依赖解析 版本错误,xxx is duplicate yyy
    Centos7.2 编译安装方式搭建 phpMyAdmin
    Jenkins 环境搭建
    awk 使用案例
    Linux文件系统
    用python写一个计算器
  • 原文地址:https://www.cnblogs.com/joker1937/p/13081219.html
Copyright © 2011-2022 走看看