Leetcode subsets2
来源:互联网 发布:淘宝网妈妈冬装 编辑:程序博客网 时间:2024/04/30 16:56
第一次提交犯了个常见错误,调用下面for循环的时候,在for里面修改了subsets,这样子会抛异常。以后得注意,遍历一个collection时候,在遍历里面改变这个collection的长度(增加,删除节点)时要谨慎。如果调用iteractor来for会抛异常,但是普通的计数比如for(int i=0;i<subsets.size();i++){ subsets.add(sth);}则可以编译运行,只是当逻辑不对时,会产生死循环而已。
for(List<Integer> subset : subsets){ /*other codes*/subsets.add(sth); }
import java.util.*;public class Solution { public List<List<Integer>> subsetsWithDup(int[] num) { Arrays.sort(num); List<List<Integer>> subsets = new LinkedList<List<Integer>>(); int[] dup = new int[]{0}; subsetsWithDup(num, 0, dup, subsets); return subsets; } public void subsetsWithDup(int[] num, int k,int[] dup, List<List<Integer>> subsets){ if(k >= num.length) { List<Integer> subset = new LinkedList<Integer>(); subsets.add(subset); return; } subsetsWithDup(num,k+1,dup, subsets); if(k<num.length-1 && num[k] == num[k+1]) dup[0]++; else dup[0] = 0; List<List<Integer>> newsubsets = new LinkedList<List<Integer>>(); for(List<Integer> subset : subsets){ int subdup = 0; while(subdup < subset.size() && subset.get(subdup) == num[k]) subdup++; if(subdup < dup[0]) continue; List<Integer> newsub = new LinkedList<Integer>(subset); newsub.add(0, num[k]); newsubsets.add(newsub); } subsets.addAll(newsubsets); } public static void main(String[] args){ Solution sol = new Solution(); int[] num = new int[]{1,2,2}; List<List<Integer>> subsets = sol.subsetsWithDup(num); for(List<Integer> subset : subsets) { for(Integer val : subset) System.out.print(val + " "); System.out.println(); } }}
0 0
- Leetcode subsets2
- Leetcode:subsets2 duplicate number
- Subsets2
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- CreateThread WaitForMultipleObjects
- IDisposable详解
- NASA望远镜拍摄太阳表面高能X射线爆发瞬间
- Java Web 必备知识笔记
- SVN 如何提交 SO 库文件
- Leetcode subsets2
- android知识点:Activity的生命周期
- Linux学习笔记-基本的命令行操作
- 国税Tax2.0 运行时错误429:ActiveX部件不能创建对象的解决办法
- Leetcode -- String to Integer (atoi)
- 使用支持向量机(SVM)对数据分类
- 转载的开发者福利 ios开发的知识
- codeforces 498 e Stairs and Lines
- Linux下Socket编程学习(二)