面试题 08.04. 幂集
面试题 08.04. 幂集
幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
代码如下:
class Solution {
/**
* @param Integer[] $nums
* @return Integer[][]
*/
function subsets($nums) {
$len = count($nums);
$subsets = pow(2, $len);
$result = [[]];
for($i=0;$i<$subsets;$i++) {
$bits = sprintf("%0".$len."b", $i);
$item = [];
for ($j=0;$j<$len;$j++) {
if ($bits[$j] == '1') $item[] = $nums[$j];
}
if (!empty($item)) $result[] = $item;
}
return $result;
}
}