zoukankan      html  css  js  c++  java
  • leetcode 子集 深搜

    一(每一个数选或不选

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

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

    示例:

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/subsets

    class Solution {
    public:
        vector<vector<int>> ans;
        vector<int> now;
        vector<vector<int>> subsets(vector<int>& nums) {
            dfs(nums,0);
            return ans;
        }
        void dfs(vector<int>& nums,int u)
        {
            if(u==nums.size()){
                ans.push_back(now);
                return;
            }
            //选
            now.push_back(nums[u]);
            dfs(nums,u+1);
            now.pop_back();
            dfs(nums,u+1);
        }
    };
    

    二(每一个数选零到k个

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

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

    示例:

    输入: [1,2,2]
    输出:
    [
    [2],
    [1],
    [1,2,2],
    [2,2],
    [1,2],
    []
    ]

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/subsets-ii

    class Solution {
    public:
        vector<vector<int>> ans;
        vector<int> now;
        vector<vector<int>> subsetsWithDup(vector<int>& nums) {
            sort(nums.begin(),nums.end());
            dfs(nums,0);
            
            return ans;
        }
        void dfs(vector<int>& nums,int u)
        {
            if(u==nums.size()){
                ans.push_back(now);
                return;
            }
            int k=u;
            while(k<nums.size()&&nums[k]==nums[u])k++;
            //不选
            dfs(nums,k);
            //选K个
            for(int i=u;i<k;++i){
                now.push_back(nums[i]);
                dfs(nums,k);
            }
            //恢复
            for(int i=u;i<k;++i)now.pop_back();
        }
    };
    
  • 相关阅读:
    PHP和Redis实现在高并发下的抢购及秒杀功能示例详解
    thinkphp整合系列之微信公众号支付
    JS之变量的运算
    (php)thinkphp3.2配置sql_server
    jyd数据结构
    mac终端下svn常用命令
    项目学习
    抛错
    phpunit
    Python
  • 原文地址:https://www.cnblogs.com/clear-love/p/11358218.html
Copyright © 2011-2022 走看看