leetcode

Question78–Subsets

給定一個整數集,集合中元素各不相同,求出所有子集。

算法

n個整數的子集N等於下面兩部分:

  • 前n-1個整數的子集Q
  • Q中的每個集合中再加入第n個元素形成的集合

eg:{2,3}的子集:{},{2},{3},{2,3}
  {2,3,4}的子集:1. 第一部分({2,3}的子集): {},{2},{3},{2,3}
                  2. 第二部分:{4},{2,4},{3,4},{2,3,4}

code

vector<vector<int>> subsets(vector<int>& nums){
    vector<vector<int>> subset;
    vector<int> a;

    subset.push_back(a);

    if(nums.size()==0) return subset;

    a.push_back(nums[0]);
    subset.push_back(a);

    for(int i=1; i<nums.size(); i++){
        int size=subset.size();
        for(int j=0; j<size; j++){
            (a=subset[j]).push_back(nums[i]);
            subset.push_back(a);
        }
    }

    return subset;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章