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. Linux系统的vi命令

    Linux系统的vi命令 vi编辑命令 1,格式: #vi filename 2,用法: //打开或新建文件,并将光标置于第一行首 #vi + filename //打开文件,并将光标置于第n行首 # ...

  2. 20145106java实验四

    实验名称:Java网络编程 实验内容: 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 结对小伙伴 20145109竺文君 博客地址: 在本次实验中,是以我作为服务 ...

  3. Android实践项目汇报总结(下)

    微博客户端的设计与实现(下) 第四章 系统详细功能实现 本应用实现了如下主要模块:程序启动模块.登录授权模块.主界面显示模块撰写发表微博模块.用户发布信息模块.软件设置模块. 4.1程序启动模块实现 ...

  4. JavaScript:正则表达式 分组

    在现在的我看来,带小挂号的就是分组,嗯. 代码: var reg=/(abc)/; var str="abcdabcdeabcdef"; console.dir(reg.exec( ...

  5. The way to Go(7): 常量

    Reference: Github: Go Github: The way to Go 常量 常量使用关键字 const 定义,用于存储不会改变的数据. const identifier [type] ...

  6. 【Coursera】Security Introduction -Ninth Week(2)

    对于公钥系统,我们现在已经有了保证它 Confidentially 的一种方法:SSL.SSL利用了公钥的概念. 那么 who we are talking to? Integrity Certifi ...

  7. ns-3 NetAnim遇到了一个问题

    安装好了 NetAnim 之后,使用NS3原有例子 third.cc ,在 Simulator::run() 前面添加如下语句: AnimationInterface anim("third ...

  8. HDU 1711 Number Sequence(KMP模板)

    http://acm.hdu.edu.cn/showproblem.php?pid=1711 这道题就是一个KMP模板. #include<iostream> #include<cs ...

  9. 【Python】【数据类型】

    [序列更新&散列&切片]"""from array import arrayimport reprlibarray1 = array('d',(1,2,3 ...

  10. hdu 1269 迷宫城堡 最简单的联通图题 kosaraju缩点算法

    迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem Des ...