Subsets II

来源:互联网 发布:js amd cmd规范 编辑:程序博客网 时间:2024/05/16 14:00

问题描述

与Subset I 相似, 这里数组中可以有重复元素

解法一:

思路:

用Subset I 的递归版本的模板,添加判断语句,把重复元素剔除。。

Code:

class Solution {    /**     * @param nums: A set of numbers.     * @return: A list of lists. All valid subsets.     */    public ArrayList<ArrayList<Integer>> subsetsWithDup(int[] nums) {        // write your code here        ArrayList<ArrayList<Integer>> results =  new ArrayList<>();        if (nums == null || nums.length == 0){            return results;        }        Arrays.sort(nums);        ArrayList<Integer> subset = new ArrayList<>();        helper(nums, 0 , subset, results);        return results;    }    private void helper(int[] nums , int startIndex, ArrayList<Integer> subset,    ArrayList<ArrayList<Integer>> results){        results.add(new ArrayList<Integer>(subset));        for (int i = startIndex; i < nums.length; i++){            if (i != startIndex && nums[i] == nums[i - 1]){                continue;            }            subset.add(nums[i]);            helper(nums, i + 1, subset, results);            subset.remove(subset.size() - 1);        }    }}
0 0
原创粉丝点击