https://leetcode-cn.com/problems/subsets/
class Solution {
public List<List<Integer>> subsets(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
List<Integer> grp = new ArrayList<>();
for (int sum = 0; sum < (1<<nums.length); sum++){
grp.clear();
for (int i = 0; i < nums.length; i++){
if ((1<<i & sum) != 0){
grp.add(nums[i]);
}
}
result.add(new ArrayList<>(grp));
}
return result;
}
}
后记:
- grp是引用,不能直接add进result中。
- int进行位运算的结果不能直接当做boolean用于if语句
- 2^n可以转化为位运算1<<n。
- “得到某个bit的值”可以转化为(1<<n & target)>>1。