zoukankan      html  css  js  c++  java
  • Leetcode 90.子集

    子集

    给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。

    说明:解集不能包含重复的子集。

    示例:

    输入: [1,2,2]

    输出:

    [

    [2],

    [1],

    [1,2,2],

    [2,2],

    [1,2],

    []

    ]

     1 import java.util.ArrayList;
     2 import java.util.Arrays;
     3 import java.util.List;
     4 
     5 class Solution {
     6     public List<List<Integer>> subsetsWithDup(int[] nums) {
     7         List<List<Integer>> list = new ArrayList<>();
     8         if(nums == null || nums.length == 0){
     9             return list;
    10         }
    11         List<Integer> data = new ArrayList<>();
    12         int length = nums.length;
    13         boolean[] visit = new boolean[length];
    14         list.add(data);
    15         Arrays.sort(nums);
    16         dfs(list,data,length,nums,0,visit);
    17         return list;
    18     }
    19 
    20     void dfs(List<List<Integer>> list,List<Integer> data,int length,int[] nums,int start,boolean[] visit){
    21         for(int i = start;i < length;i++){
    22             if(!visit[i]){
    23                 if(i > 0 && nums[i] == nums[i - 1] && !visit[i - 1]){
    24                     continue;
    25                 }
    26                 data.add(nums[i]);
    27                 visit[i] = true;
    28                 list.add(new ArrayList<>(data));
    29                 dfs(list,data,length,nums,i + 1,visit);
    30                 visit[i] = false;
    31                 data.remove(data.size() - 1);
    32             }
    33         }
    34     }
    35 }

     

  • 相关阅读:
    接口和抽象类的异同点
    实体对象间传值克隆
    什么是反射&反射的8个类的用法
    ERP中反射的两个实例
    基础02 Java 跨平台原理
    基础01 dos命令
    lists删除
    多字段 java对象排序
    Java对象排序
    MySQL表中数据的迁移
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10163071.html
Copyright © 2011-2022 走看看