思路:
利用位运算
位运算前置知识:
1<<n
: 把1左移n位
代码思路:
利用位运算将所有情况列出
当nums数组大小为3时,有以下八种情况
000,001,010,
011,100,101,
110,111
通过这些数我们就可以通过二进制模拟出所有情况
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> res = new ArrayList<>();
int n = nums.length;
for (int i = 0; i < (1 << n); i++) {
ArrayList<Integer> t = new ArrayList<>();
for (int j = 0; j < n; j++) {
if ((i & (1 << j)) != 0) {
t.add(nums[j]);
}
}
res.add(t);
}
return res;
}
}
原文:https://www.cnblogs.com/void-white/p/14130473.html