要求:

 

给定一个可能具有重复数字的列表,返回其所有可能的子集

 注意事项

  • 子集中的每个元素都是非降序的
  • 两个子集间的顺序是无关紧要的
  • 解集中不能包含重复子集

样例

如果 S = [1,2,2],一个可能的答案为:

[  [2],  [1],  [1,2,2],  [2,2],  [1,2],  []]

 

思路:可以看这篇http://blog.csdn.net/aphysia/article/details/77849042,只是更改一部分,取出list的循环控制条件是改成为列表的大小,然后加入的时候,要判断列表里面是不是已经含有这个元素,要是已经有,则不加进去,否则,要加进去。代码如下:

 

 

 

public class Solution { /* * @param nums: A set of numbers. * @return: A list of lists. All valid subsets. */ public List<List> subsetsWithDup(int[] nums) { ArrayList<List> res=new ArrayList<List>(); ArrayListlist=new ArrayList(); if(nums==null ){ return res; } res.add(list); Arrays.sort(nums); for(int i=0;i<nums.length;i++){ int size=res.size(); for(int j=0;j<size;j++){ Listtemp=res.get(0); res.remove(0); ArrayListtemp2=new ArrayList(temp); temp2.add(temp2.size(),nums[i]); if(!res.contains(temp2)) res.add(temp2); if(!res.contains(temp)) res.add(temp); } } return res; } }

 

如果有所帮助,脸皮厚求个赞~

此文章仅代表自己(本菜鸟)学习积累记录,或者学习笔记,如有侵权,请联系作者删除。人无完人,文章也一样,文笔稚嫩,在下不才,勿喷,如果有错误之处,还望指出,感激不尽~

技术之路不在一时,山高水长,纵使缓慢,驰而不息。

公众号:秦怀杂货店

 

©著作权归作者所有:来自51CTO博客作者秦怀杂货店的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. (lintcode)第16题 带重复元素的排列
  2. (lintcode)第452题删除链表中的元素
  3. (lintcode)第6题 合并排序数组
  4. 又一个同学被快手挂掉了
  5. grant-uri-permission
  6. Google Android(安卓)SDK舍弃Java ME,支持Java Lite和Apache Harm
  7. Unity上同时兼容Android和IOS的JSON库
  8. 在android中通过java层程序调用命令行的一些备注
  9. android targetname 问题

随机推荐

  1. Android showDialog时报错requestFeature
  2. Android01之LinearLayout和RelativeLayou
  3. android实现卸载提示
  4. Android(安卓)Studio Note
  5. Android 分类法:六个类型,八种用户
  6. 浅析Android线程模型一 --- 转
  7. Android 疯狂足球游戏源码
  8. ProgressBar的样式及用法
  9. android删除sd卡文件
  10. Android LiveData简介(一)