leetcode 78:Subsets

来源:互联网 发布:python 打包发布 编辑:程序博客网 时间:2024/05/22 15:43
题目:

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

Note:

  • Elements in a subset must be in non-descending order.
  • 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) {sort(nums.begin(), nums.end());vector<vector<int>> re;vector<int> temp1;re.push_back(nums);re.push_back(temp1);int size = nums.size();if (size < 2) return re;for (int len = 1; len < size; ++len){vector<int> temp;back(re, temp, nums, len, 0,0);}return re;}void back(vector<vector<int>> &re, vector<int> &temp, vector<int>& nums, int len, int index,int count){if (count == len){re.push_back(temp);return;}if (index >= nums.size()) return;for (int i = index; i < nums.size(); ++i){temp.push_back(nums[i]);back(re, temp, nums, len, i+1, count+1);temp.pop_back();}}};


0 0
原创粉丝点击