LeetCode-Subsets-解题报告

原题链接 https://leetcode.com/problems/subsets/

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) {
		vector <vector<int> >ans;
		sort(nums.begin(), nums.end());
		for (int i = 0; i < nums.size(); ++i)
			ans.push_back(vector<int>(1, nums[i]));
		if (nums.size() != 1)
			ans.push_back(nums);
		for (int i = 2; i < nums.size(); ++i)
		{
			vector<int>tmp(i);
			cmb(0, 0, i, nums, tmp, ans);
		}
		ans.push_back(vector<int>());
		return ans;
	}
	void cmb(int pos,int deep, int& len, vector<int>& nums,vector<int>& t, vector <vector<int> >& ans)
	{
		if (deep == len)
		{
			ans.push_back(t);
			return;
		}
		for (int i = pos; i < nums.size(); ++i)
		{
			t[deep] = nums[i];
			cmb(i + 1, deep + 1, len, nums, t, ans);
		}
	}
};


阅读更多
文章标签: C++ leetcode
个人分类: leetcode
想对作者说点什么? 我来说一句

ZOJ解题报告ZOJ解题报告

2010年08月02日 282KB 下载

acm解题报告.rar

2009年03月18日 10MB 下载

poj 2329解题报告

2010年04月02日 5KB 下载

poj 3083解题报告

2010年04月02日 8KB 下载

poj 3414解题报告

2010年04月02日 8KB 下载

poj 1012解题报告

2010年04月02日 3KB 下载

没有更多推荐了,返回首页

不良信息举报

LeetCode-Subsets-解题报告

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭