1. 概述
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
2. 解题
<?phpclass Solution {private $ret = [];/*** @param Integer[] $nums* @return Integer[][]*/public function subsets($nums) {$this->ret[] = [];for ($i = 1; $i <= count($nums); $i++) {$this->do($nums, $i);}return $this->ret;}private function do($nums, $n = 1, $k = 0, $arr = []) {if (count($arr) == $n) {$this->ret[] = $arr;return;}if ($k > count($nums) - 1) {return;}for ($i = $k; $i < count($nums); $i++) {array_push($arr, $nums[$i]);$this->do($nums, $n, $i + 1, $arr);array_pop($arr);}return;}}$nums = [1, 2, 3];$cls = new Solution();$r = $cls->subsets($nums);array_walk($r, function (&$v) {$v = implode(',', $v);});print_r($r);
