public static List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> ans = new ArrayList<>(); ans.add(new ArrayList<>()); int length = nums.length; int max = (int) Math.pow(2, length); for (int i = 1; i < max; i++) { ans.add(compute(i, nums)); } return ans; }
private static List<Integer> compute(int num, int[] nums) { List<Integer> list = new ArrayList<>(); int count = 0; while (num !=0) { inttemp = num % 2; if (temp == 1) { list.add(nums[count]); } count++; num /= 2; } return list; }
private static void print(List<List<Integer>> nums) { for (List<Integer> num : nums) { for (Integerinteger : num) { System.out.print(integer + " "); } System.out.println(); } }