子集

題目描述

給定一組不含重複元素的整數數組 nums,返回該數組所有可能的子集(冪集)。

說明:解集不能包含重複的子集。

示例

輸入: nums = [1,2,3]
輸出:
[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]

思路

遞歸,需要注意遞歸的細節。

實現

void getSub(vector<int>& nums, vector<int>& data, vector<vector<int>>& res, int len, int index)
{
	if (data.size() == len)
	{
		res.push_back(data);
		return;
	} 
	for (int i = index; i < nums.size(); i++)
	{
		data.push_back(nums[i]);
		getSub(nums, data, res, len, i + 1);
		data.pop_back();
	}
}

vector<vector<int>> subsets(vector<int>& nums) {
	vector<vector<int>> res;
	vector<int> data;
	for (int i = 0; i <= nums.size(); i++)
	{
		getSub(nums, data, res, i, 0);
	}

	return res;
}

 

發佈了158 篇原創文章 · 獲贊 42 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章