zoukankan      html  css  js  c++  java
  • 30 Day Challenge Day 14 | Leetcode 78. Subsets

    题解

    Medium | Backtracking

    class Solution {
    public:
        vector<vector<int>> subsets(vector<int>& nums) {
            sort(nums.begin(), nums.end());
            vector<vector<int>> sols;
            vector<int> sol;
            for(int i = 0; i <= nums.size(); i++) {
                helper(nums, 0, i, sol, sols);
            }
            return sols;
        }
        
        void helper(vector<int>& nums, int pos, int k, vector<int>& sol, vector<vector<int>>& sols) {
            if(k == sol.size()) {
                sols.push_back(sol);
                return;
            }
            
            for(int i = pos; i < nums.size(); i++) {
                sol.push_back(nums[i]);
                helper(nums, i+1, k, sol, sols);
                sol.pop_back();
            }
        }
    };
    

    其实过程有一点冗余,可以简化为:

    class Solution {
    public:
        vector<vector<int>> subsets(vector<int>& nums) {
            sort(nums.begin(), nums.end());
            vector<vector<int>> sols;
            vector<int> sol;
            helper(nums, 0, sol, sols);
            return sols;
        }
        
        void helper(vector<int>& nums, int pos, vector<int>& sol, vector<vector<int>>& sols) {
            sols.push_back(sol);
            
            for(int i = pos; i < nums.size(); i++) {
                sol.push_back(nums[i]);
                helper(nums, i+1, sol, sols);
                sol.pop_back();
            }
        }
    };
    
  • 相关阅读:
    将SVD应用于推荐系统
    matrix.A
    机架感知配置
    PCA主成分分析进行数据降维
    Rabbitmq的高级特性
    Topics(主题模式)
    Routing(exchange--direct)
    fanout(Publish/Subscribe)发布/订阅
    Work Queues(工作队列)
    simple queue(简单队列)
  • 原文地址:https://www.cnblogs.com/casperwin/p/13749087.html
Copyright © 2011-2022 走看看