Subsets

思路

SubSet 問題可以轉換爲一個遞歸問題 {first_item , SubSet(N - 1)} U {SubSet(N - 1)}

代碼

78. Subsets

class Solution {
public:
    vector<vector<int>> subsets(vector<int>& nums) {
        vector<vector<int>> allSubset = {{}};
        for(int i = 0; i < nums.size(); i++){
            int allSubsetSize = allSubset.size();
            for(int j = 0; j < allSubsetSize; j++){
                vector<int> temp(allSubset[j]);
                temp.push_back(nums[i]);
                allSubset.push_back(temp);
            }
        }
        return allSubset;
    }
};

90. Subsets II


class Solution {
public:
    vector<vector<int>> subsetsWithDup(vector<int>& nums) {
        unordered_map<int, int> numMap;
        vector<vector<int>> allSubset{{}};
        int numsCount{0}; 
        for(auto n : nums)
            numMap[n]++;
        
        for(auto p : numMap){
            numsCount++;
            int allSubsetSize = allSubset.size();
            for(int i = 1; i <= p.second; i++){
                vector<vector<int>> copy(allSubset.begin(), allSubset.begin() + allSubsetSize);
                for(int j = 0; j < copy.size(); j++)
                    copy[j].insert(copy[j].end(), p.second, p.first);
                allSubset.insert(allSubset.end(), copy.begin(), copy.end());
            }
        }
        return allSubset;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章