/**
* 78. Subsets
* https://leetcode.com/problems/subsets/description/
*
* Given a set of distinct integers, nums, return all possible subsets (the power set).
Note: The solution set must not contain duplicate subsets.
Example:
Input: nums = [1,2,3]
Output:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
* */
1 class Solution {
2 fun subsets(A: IntArray): List<List<Int>> {
3 A.sort();
4 val result = ArrayList<ArrayList<Int>>();
5 helper(result, ArrayList<Int>(), A, 0);
6 return result;
7 }
8
9 fun helper(result: ArrayList<ArrayList<Int>>, arr: ArrayList<Int>, A: IntArray, index: Int){
10 result.add(ArrayList<Int>(arr));//new reference for arr
11 for (i in index..(A.size - 1)) {
12 arr.add(A[i]);
13 helper(result, arr, A, i + 1);
14 arr.removeAt(arr.size - 1);
15 }
16 }
17 }