回溯法,subsets
2016-07-24 12:50
302 查看
public List<List<Integer>> subsets(int[] nums) { List<List<Integer>> result = new ArrayList<>(); subsets(result, new ArrayList<>(), nums, 0); return result; } private void subsets(List<List<Integer>> result, List<Integer> tmp, int[] nums, int idx) { result.add(new ArrayList<>(tmp)); for (int i = idx; i < nums.length; i++) { tmp.add(nums[i]); subsets(result, tmp, nums, i + 1); tmp.remove(tmp.size() - 1); } } public List<List<Integer>> subsetsWithDup(int[] nums) { List<List<Integer>> result = new ArrayList<>(); Arrays.sort(nums); subsetsWithDup(result, new ArrayList<>(), nums, 0); return result; } private void subsetsWithDup(List<List<Integer>> result, List<Integer> tmp, int[] nums, int idx) { result.add(new ArrayList<>(tmp)); for (int i = idx; i < nums.length; i++) { if (i > idx && nums[i] == nums[i - 1]) { continue; } tmp.add(nums[i]); subsetsWithDup(result, tmp, nums, i + 1); tmp.remove(tmp.size() - 1); } }
相关文章推荐
- React Router
- seajs常用API
- 数据的输入输出
- 第三章 内核结构
- 二叉树的前中后序+层次遍历
- Scala Map
- [LEETCODE]318. Maximum Product of Word Lengths
- 深入理解Java Servlet与Web容器之间的关系
- Codeforces Round #364 (Div. 2) C. They Are Everywhere 尺取法
- java DES加密解密源码
- 文章标题
- SICP_Python版第二章:集合的表示
- Linux基础入门
- hdu1317 负权最短路(Floyd+bellman)
- expect 提供用户名和密码的SSH自动登录脚本
- nyoj 1036 非洲小孩 【区间找点】
- HotFix介绍及HotFix开源项目推荐
- VS2015Intellisense智能提示的模式的切换
- webview跳转页面的返回操作不成功,死循环问题
- Java集合框架(下)