90 Subsets II

可以使用backtracking的基本回溯方法进行求解。

Java

class Solution {
    public List<List<Integer>> subsetsWithDup(int[] nums) {
        List<List<Integer>> result = new ArrayList<>();
        List<Integer> list = new ArrayList<>();
        result.add(list);
        Arrays.sort(nums);
        backtracking(nums, 0, result, list);
        return result;
    }

    private void backtracking(int[] nums, int start, List<List<Integer>> result, List<Integer> list){
        for(int i = start; i < nums.length; i ++){
            if(i > start && nums[i] == nums[i-1])
                continue;
            list.add(nums[i]);
            result.add(new ArrayList<>(list));
            backtracking(nums, i + 1, result, list);
            list.remove(list.size() - 1);
        }
    }
}

results matching ""

    No results matching ""