[Leetcode] 78. Subsets 解题报告

来源:互联网 发布:mac恢复系统 数据 编辑:程序博客网 时间:2024/05/16 11:42

题目

Given a set of distinct integers, nums, return all possible subsets.

Note: The solution set must not contain duplicate subsets.

For example,
If nums = [1,2,3], a solution is:

[  [3],  [1],  [2],  [1,2,3],  [1,3],  [2,3],  [1,2],  []]

思路

这是最标准的一道回溯法题目。对于数组中的每一个数,要么将它加入到结果中,要么不加入。注意下面的代码其实就是回溯法的标准模板,建议大家好好领会,基本上所有的回溯法题目都可以套用这个模板。

代码

class Solution {public:    vector<vector<int>> subsets(vector<int>& nums) {        vector<vector<int>> ret;        vector<int> line;        subset(ret, line, nums, 0);        return ret;    }private:    void subset(vector<vector<int>> &ret, vector<int> &line,         vector<int> &nums, int index) {        if (index == nums.size()) {            ret.push_back(line);            return;        }        subset(ret, line, nums, index + 1);     // exclude nums[index]        line.push_back(nums[index]);        subset(ret, line, nums, index + 1);     // include nums[index]        line.pop_back();    }};



0 0
原创粉丝点击