zoukankan      html  css  js  c++  java
  • Subsets

    题目链接

    Subsets - LeetCode

    注意点

    解法

    解法一:递归,每次就将tmp加入ret中,然后往tmp中加一个数字,继续递归。原理如下,第i(i > 0)层表示nums[i-1]的状态(选择或者不选择),最后叶节点就是结果。

                            []        
                       /                  
                      /                 
                     /              
                  [1]                []
               /                  /    
              /                  /              
           [1 2]       [1]       [2]     []
          /          /        /       / 
      [1 2 3] [1 2] [1 3] [1] [2 3] [2] [3] []
    
    class Solution {
    public:
        typedef vector<int> v;
        void recursion(int start,v nums,v tmp, vector<v>& ret)
        {
            ret.push_back(tmp);
            int n = nums.size();
            for(int i = start;i < n;i++)
            {
                tmp.push_back(nums[i]);
                recursion(i+1,nums,tmp,ret);
                tmp.pop_back();
            }
        }
        vector<vector<int>> subsets(vector<int>& nums) {
            vector<vector<int>> ret;
            v tmp;
            recursion(0,nums,tmp,ret);
            return ret;
        }
    };
    

    解法二:非递归,nums中的数字一个个处理,从空集开始,加入nums[0],然后在上一次产生的集合的基础上继续加入下一个数字nums[1],一直下去直到生成处理完所有数字。

    class Solution {
    public:
        vector<vector<int>> subsets(vector<int>& nums) {
            vector<vector<int>> ret(1);
            int i,j,n = nums.size();
            for(i = 0;i < n;i++)
            {
                int m = ret.size();
                for(j  = 0;j < m;j++)
                {
                    ret.push_back(ret[j]);
                    ret.back().push_back(nums[i]);
                }
            }
            return ret;
        }
    };
    

    小结

  • 相关阅读:
    Linux入门
    服务器核心知识
    跨域
    DRF的解析器和渲染器
    DRF的分页
    DRF 权限 频率
    DRF 版本 认证
    Django Rest Framework 视图和路由
    Serializers 序列化组件
    六、Java NIO 通道之间的数据传输
  • 原文地址:https://www.cnblogs.com/multhree/p/10497306.html
Copyright © 2011-2022 走看看