Advertisement
Guest User

78. Subsets | Time: O (n*2^n) | Space: O (n*2^n)

a guest
Aug 20th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.95 KB | None | 0 0
  1. // Problem: https://leetcode.com/problems/subsets/
  2. // Solution: https://www.algoexpert.io/questions/Powerset
  3.  
  4. import java.util.ArrayList;
  5.  
  6. class Program {
  7.   // O(n*2^n) time | O(n*2^n) space
  8.   public static ArrayList<ArrayList<Integer>> powerset(ArrayList<Integer> array) {
  9.     return powerset(array, array.size() - 1);
  10.   }
  11.    
  12.   public static ArrayList<ArrayList<Integer>> powerset(ArrayList<Integer> array, int idx) {
  13.     if (idx < 0) {
  14.       ArrayList<ArrayList<Integer>> emptySet = new ArrayList<ArrayList<Integer>>();
  15.       emptySet.add(new ArrayList<Integer>());
  16.       return emptySet;
  17.     }
  18.        
  19.     int ele = array.get(idx);
  20.     ArrayList<ArrayList<Integer>> subsets = powerset(array, idx - 1);
  21.     int length = subsets.size();
  22.     for (int i = 0; i < length; i++) {
  23.       ArrayList<Integer> currentSubset = new ArrayList<Integer>(subsets.get(i));
  24.       currentSubset.add(ele);
  25.       subsets.add(currentSubset);
  26.     }
  27.     return subsets;
  28.   }
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement