给你一个整数数组 nums ,返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。
package practice;
import java.util.ArrayList;
import java.util.List;
public class 子集78 {
public static void main(String[] args){
int[] nums = {1,2,3};
subsets(nums);
}
public static List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
int l = nums.length;
int m = (int)Math.pow(2, l);
for (int i = 0; i < m; i++){
String b = Integer.toBinaryString(i);
int re = nums.length - b.length();
List<Integer> list = new ArrayList<>();
for (int j = b.length() - 1; j >= 0; j--){
if (b.charAt(j) == '1'){
list.add(nums[j + re]); // 索引回去
}
}
result.add(list);
}
return result;
}
}