zoukankan      html  css  js  c++  java
  • 90. Subsets II

    Given a collection of integers that might contain duplicates, nums, return all possible subsets (the power set).

    Note: The solution set must not contain duplicate subsets.

    Example:

    Input: [1,2,2]
    Output:
    [
    [2],
    [1],
    [1,2,2],
    [2,2],
    [1,2],
    []
    ]

    加个continue就行了。

    continue和break的区别:break结束双循环的外面一层,continue只结束里面一层

    尝试用自然语言描述一下:
    这个元素和之前i - 1的重复,就跳过这个元素。
    i++,到了数组中的下一个元素,就没有之前的i - 1了,而是新的i - 1
    所以可以保证不重复

    从case理解:1122333
    i = 5 递归是往深了走,所以一下到后面去了。作为一个经常重复的i被踢了,还是那句话:T的是i
    nums[i] = 3
    这时候要跳过 
      
    i = 4 后面就在recursive的过程中不断踢人。
    nums[i] = 3 
    这时候要跳过
      
    i = 5
    nums[i] = 3
    这时候要跳过
      
    i = 5
    nums[i] = 3
    这时候要跳过
      
    i = 4
    nums[i] = 3
    这时候要跳过
      
    i = 5
    nums[i] = 3
    这时候要跳过
      
    i = 2
    nums[i] = 2
    这时候要跳过
      
    i = 5
    nums[i] = 3
    这时候要跳过
      
    i = 4
    nums[i] = 3
    这时候要跳过
      
    i = 5
    nums[i] = 3
    这时候要跳过
      
    i = 5
    nums[i] = 3
    这时候要跳过
      
    i = 4
    nums[i] = 3
    这时候要跳过
      
    i = 5
    nums[i] = 3
    这时候要跳过
      
    i = 5
    nums[i] = 3
    这时候要跳过
      
    i = 4
    nums[i] = 3
    这时候要跳过
      
    i = 5
    nums[i] = 3
    这时候要跳过
      
    i = 2
    nums[i] = 2
    这时候要跳过
      
    i = 5
    nums[i] = 3
    这时候要跳过
      
    i = 4
    nums[i] = 3
    这时候要跳过
      
    i = 5
    nums[i] = 3
    这时候要跳过
    class Solution {
        public List<List<Integer>> subsetsWithDup(int[] nums) {
        List<List<Integer>> list = new ArrayList<>();
        Arrays.sort(nums);
        backtrack(list, new ArrayList<>(), nums, 0);
        return list;
    }
    
    private void backtrack(List<List<Integer>> list, List<Integer> tempList, int [] nums, int start){
        list.add(new ArrayList<>(tempList));
        for(int i = start; i < nums.length; i++){
            
            if (i > start && (nums[i] == nums[i - 1])) {
                continue;
            }
            
            tempList.add(nums[i]);
            backtrack(list, tempList, nums, i + 1);
            tempList.remove(tempList.size() - 1);
        }
    } 
    }
    View Code
  • 相关阅读:
    PowerDesigner执行SQL生成模型
    IBM,ORACLE 文档
    JAAS 自定义登陆模块
    JAAS 使用windos登陆示例
    IFRAME跨域
    JAVA RSA 数字签名
    JAVA数字证书
    搭模型时常用的numpy公式,不定时更新~
    Failed to connect to github.com port 443: Timed out
    linux和colab上安装torch_geometric踩坑记录,安装过程
  • 原文地址:https://www.cnblogs.com/immiao0319/p/13205699.html
Copyright © 2011-2022 走看看