打印一个含有重复元素数组的所有子集
2016-03-30 11:37
337 查看
打印一个含有重复元素数组的所有子集。例如:[1,2,2]的所有子集为[[],[1],[1,2],[1,2,2],[2],[2,2]]。
1、递归求解
2、直接求解
1、递归求解
List<List<Integer>> list=new ArrayList<List<Integer>>(); public List<List<Integer>> subsetsWithDup(int[] nums) { List<Integer> list1=new ArrayList<Integer>(); Arrays.sort(nums); backTrack(0,nums,list1); return list; } public void backTrack(int i,int[] nums,List<Integer> currentList){ list.add(currentList); for(int j=i;j<nums.length;j++){ if(j==i || nums[j]!=nums[j-1]){ currentList.add(nums[j]); backTrack(j+1,nums,new ArrayList<Integer>(currentList)); currentList.remove(currentList.size()-1); } } }
2、直接求解
public List<List<Integer>> subsetsWithDup(int[] nums) { List<List<Integer>> res = new ArrayList<>(); List<Integer> temp = new ArrayList<>(); res.add(temp); Arrays.sort(nums); int l = 0, k; for (int i = 0; i < nums.length; i++) { if (i == 0 || nums[i] != nums[i-1]) l = res.size(); k = res.size(); for (int j = k-l; j < k; j++) { temp = new ArrayList<>(res.get(j)); temp.add(nums[i]); res.add(temp); } } return res; }
相关文章推荐
- 链接器那些事
- 美女金牌讲师小班精品课程:Java泛型与反射机制
- Android Loader使用详解
- bzoj 2393 Cirno的完美算数教室(容斥原理+搜索)
- 理解HTTP session原理及应用
- 微软Hololens应用及开发——HoloLens介绍篇(三)应用界面
- iOSCoreAnimation动画系列教程(一):CABasicAnimation
- Leetcode 206
- 原生js实现表单的正则验证,所有验证都通过后提交按钮才可用
- 集成支付宝支付
- JIRA6.3安装及alige插件破解
- 从IRQ到IRQL(APIC版)
- Node
- Listview加载不同布局
- BFC
- 单元测试
- PHP记录页面停留时间的方法
- FreeBSD 安裝記錄
- Java反射之内部类
- React Native第3天——常用组件和常见Q&A