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:

求所有的子集合的问题,只不过这里的子集合里面的数字不会发生重复的,实际上比另一个会重复的还要简单一点,也是用dfs就可以解决,我还是喜欢将传递的变量生命成为private,这样方便一点,避免出现很长的参数列表:

 class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
sort(nums.begin(), nums.end());
rawVec = nums;
tmp.clear();
ret.clear();
dfs();
return ret;
} void dfs(int start)
{
ret.push_back(tmp);
if(start >= raw.size()) return;
if(start < rawVec.size()){
for(int i = start + ; i < rawVec.size(); ++i){
tmp.push_back(i);
dfs(i);
tmp.pop_back();
}
}
}
private:
vector<vector<int>> ret;
vector<int> tmp;
vector<int> rawVec;
};

java版本的代码如下所示,基本上去除了所有的全局变量,和Subsets II的java代码基本上是相同的:

 public class Solution {
public List<List<Integer>> subsets(int[] nums) {
Arrays.sort(nums);
List<List<Integer>> ret = new ArrayList<List<Integer>>();
List<Integer>tmp = new ArrayList<Integer>();
dfs(ret, tmp, 0, nums, nums.length);
return ret;
} public void dfs(List<List<Integer>> ret, List<Integer> tmp, int start, int [] nums, int limit){
if(start > limit)
return;
else if(start == limit){
ret.add(new ArrayList(tmp));
}else{
ret.add(new ArrayList(tmp));
for(int i = start; i < limit; ++i){
tmp.add(nums[i]);
dfs(ret, tmp, i+1, nums, limit);
tmp.remove((Integer)nums[i]);
}
}
}
}

最新文章

  1. android四大组件之Broadcast
  2. 点餐系统Sprint2总结
  3. WinForm开发之取送货管理2
  4. Java数据结构——队列
  5. nodejs框架express快速开始
  6. logstash
  7. Php检测文件编码方法
  8. 使用grep查找文件中指定字符出现的次数
  9. labview 中activex的初步使用方法
  10. implode 多维数组转一维数组并字符串输出
  11. 关于android:configChanges小结
  12. win10 uwp 入门
  13. [转载] 《Hadoop基础教程》之初识Hadoop
  14. J2EE中MVC的各层的设计原则及其编写注意事项
  15. vue 修改数据界面没有及时更新nextTick
  16. ES6的一些知识学习
  17. sql注入解析
  18. thymeleaf使用基础教程
  19. 树莓派进阶之路 (035) - 基于linux的zsh安装脚本
  20. iOS9下App Store新应用提审攻略

热门文章

  1. ubuntu常见错误--Could not get lock /var/lib/dpkg/lock解决(转)
  2. 百度地图sn计算方法说明
  3. iOS警告框和操作表
  4. 模版抽离 优化url
  5. Map中object转换成boolean类型
  6. Mycat实现Mysql数据库读写分离
  7. 使用git从本地上传至git码云远程仓库
  8. Shell编程之运算
  9. DNS 介绍
  10. webstrom上运行node项目配置操作