1.

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],
[]
] 1.递归
class Solution {
public:
void getSubsets(vector<vector<int>> &res, vector<int> nums, vector<int> v, int n, int m, int k, int idx)
{
if(k == m)
{
res.push_back(v);
v.clear();
return;
}
for(int i = idx; i < n; i++)
{
v.push_back(nums[i]);
getSubsets(res, nums, v, n, m, k+, i+);
v.pop_back();
}
} vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> res;
vector<int> v;
res.push_back(v);
int n = nums.size(), i;
if( == n)
return res;
sort(nums.begin(), nums.end());
for(i = ; i <= n; i++)
{
getSubsets(res, nums, v, n, i, , );
}
return res;
}
};

2.非递归
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> res;
vector<int> v;
res.push_back(v);
int n = nums.size(), l, i, j;
if( == n)
return res;
sort(nums.begin(), nums.end());
for(i = ; i < n; i++)
{
l = res.size();
for(j = ; j < l; j++)
{
v = res[j];
v.push_back(nums[i]);
res.push_back(v);
}
}
return res;
}
};
class Solution {
public:
void getSubsets(vector<vector<int>> &res, vector<int> nums, int n, int m)
{
vector<int> d;
int i, j;
for(i = ; i < n; i++)
{
d.push_back((i < m) ? : );
}
while()
{
vector<int> v;
for(i = ; i < n; i++)
{
if(d[i])
v.push_back(nums[i]);
}
res.push_back(v); //find [1, 0] pattern
bool found = false;
int ones = ;
for(i = ; i < n-; i++)
{
if( == d[i] && == d[i+])
{
d[i] = ;
d[i+] = ;
found = true;
for(j = ; j < i; j++)
{
d[j] = (ones > ) ? : ;
ones--;
}
break;
}
if( == d[i])
ones++;
}
if(!found)
break;
}
} vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> res;
vector<int> v;
res.push_back(v);
int n = nums.size(), i;
if( == n)
return res;
sort(nums.begin(), nums.end());
for(i = ; i <= n; i++)
{
getSubsets(res, nums, n, i);
}
return res;
}
};

2.

Given a collection of integers that might contain duplicates, 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,2], a solution is:

[
[2],
[1],
[1,2,2],
[2,2],
[1,2],
[]
]
class Solution {
public:
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
vector<vector<int>> res;
vector<int> v;
res.push_back(v);
int n = nums.size(), l1, l2, i, j;
if( == n)
return res;
sort(nums.begin(), nums.end());
for(i = ; i < n; i++)
{
l1 = res.size();
for(j = ; j < l1; j++)
{
v = res[j];
v.push_back(nums[i]);
res.push_back(v);
}
while(i+ < n && nums[i] == nums[i+])
{
l2 = res.size();
for(j = l2-l1; j < l2; j++)
{
v = res[j];
v.push_back(nums[i]);
res.push_back(v);
}
i++;
}
}
return res;
}
};
class Solution {
public:
void getSubsets(vector<vector<int>> &res, vector<int> nums, vector<int> v, int n, int m, int k, int idx)
{
if(k == m)
{
res.push_back(v);
v.clear();
return;
}
for(int i = idx; i < n; )
{
v.push_back(nums[i]);
getSubsets(res, nums, v, n, m, k+, i+);
v.pop_back();
i++;
while(i < n && nums[i] == nums[i-])
i++;
}
} vector<vector<int>> subsetsWithDup(vector<int>& nums) {
vector<vector<int>> res;
vector<int> v;
res.push_back(v);
int n = nums.size(), i;
if( == n)
return res;
sort(nums.begin(), nums.end());
for(i = ; i <= n; i++)
getSubsets(res, nums, v, n, i, , );
return res;
}
};

78. Subsets 90. Subsets II的更多相关文章

  1. leetcode 78. Subsets 、90. Subsets II

    第一题是输入数组的数值不相同,第二题是输入数组的数值有相同的值,第二题在第一题的基础上需要过滤掉那些相同的数值. level代表的是需要进行选择的数值的位置. 78. Subsets 错误解法: cl ...

  2. Leetcode之回溯法专题-90. 子集 II(Subsets II)

    Leetcode之回溯法专题-90. 子集 II(Subsets II) 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入 ...

  3. 【LeetCode】90.Subsets II

    Subsets II Given a collection of integers that might contain duplicates, nums, return all possible s ...

  4. LeetCode Problem 90. Subsets II

    python solution 123456789101112131415161718192021222324252627 class (object): def subsetsWithDup(sel ...

  5. Leetcode之回溯法专题-78. 子集(Subsets)

    Leetcode之回溯法专题-78. 子集(Subsets) 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = ...

  6. [leetcode] 90. 子集 II.md

    90. 子集 II 78. 子集题的扩展,其中的元素可能会出现重复了 我们仍沿用78题的代码,稍作改动即可: 此时需要对nums先排个序,方便我们后面跳过选取相同的子集. 跳过选取相同的子集.当选取完 ...

  7. 90. 子集 II

    90. 子集 II 题意 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: [1,2,2]输出:[ [2], [1], ...

  8. Java实现 LeetCode 90 子集 II(二)

    90. 子集 II 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: [1,2,2] 输出: [ [2], [1], [ ...

  9. 78. Subsets(M) & 90. Subsets II(M) & 131. Palindrome Partitioning

    78. Subsets Given a set of distinct integers, nums, return all possible subsets. Note: The solution ...

随机推荐

  1. JS四舍五入保留两位小数

    //四舍五入保留2位小数(若第二位小数为0,则保留一位小数) function keepTwoDecimal(num) { var result = parseFloat(num); if (isNa ...

  2. spring mvc @ModelAttribute 每次执行requestmapping前自动执行

    在不少应用场景中,我们希望在每次执行requestmapping前自动执行一些操作,比如把某些数据(比如数据字典.系统配置.标准错误号,这在企业应用系统中极为常见)塞到model中供view访问,因为 ...

  3. 20145227鄢曼君《网络对抗》Web基础

    20145227鄢曼君<网络对抗>Web基础 实验内容 (1)Web前端HTML (2)Web前端javascipt (3)Web后端:MySQL基础:正常安装.启动MySQL,建库.创建 ...

  4. 20145335郝昊《网络攻防》Exp7 网络欺诈技术防范

    20145335郝昊<网络攻防>Exp7 网络欺诈技术防范 实验内容 本次实践本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法. 简单应用SET工具建立冒名网站. ...

  5. 关于fragment点击穿透的问题

    当一个activity有多个fragment的时候,点击当前显示的fragment,如果点击处在其他fragment中也有相应的控件,那么可能会点击穿透,有响应另外fragment事件的趋势.但是这个 ...

  6. Python3基础 生成器推导式 简单示例

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  7. Wireshark过滤总结

    Wireshark提供了两种过滤器:捕获过滤器:在抓包之前就设定好过滤条件,然后只抓取符合条件的数据包.显示过滤器:在已捕获的数据包集合中设置过滤条件,隐藏不想显示的数据包,只显示符合条件的数据包.需 ...

  8. VS不显示最近打开的项目

    VS2012不显示最近打开的项目 解决方法, 在"运行"中输入 " gpedit.msc"打开后在"用户配置"-"管理模板&quo ...

  9. 【错误解决】SVN常见错误及解决方式

    1.Error while creating module:org.apache.subversion.javahl.ClientException:Authorization failed svn: ...

  10. TensorFlow上实践基于自编码的One Class Learning

    “我不知道什么是爱,但我知道什么是不爱” --One Class Learning的自白 一.单分类简介 如果将分类算法进行划分,根据类别个数的不同可以分为单分类.二分类.多分类,常见的分类算法主要解 ...