[Leetcode] Subsets II (Java)

来源:互联网 发布:类似hdp直播软件 编辑:程序博客网 时间:2024/05/01 11:05

Given a collection of integers that might contain duplicates, S, 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 S = [1,2,2], a solution is:

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

DFS

public class Solution {  public ArrayList<ArrayList<Integer>> subsetsWithDup(int[] num) {ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();Arrays.sort(num);ArrayList<Integer> list = new ArrayList<Integer>();dfs(res,0,num,list);return res;}private void dfs(ArrayList<ArrayList<Integer>> res,int index,int[] num,ArrayList<Integer> list) {ArrayList<Integer> tmp = new ArrayList<Integer>(list);res.add(tmp);int pre=0;for(int i=index;i<num.length;i++){if(i==index)pre=num[index]-1;if(pre==num[i])continue;list.add(num[i]);dfs(res, i+1, num, list);list.remove(list.size()-1);pre=num[i];}}}


0 0
原创粉丝点击