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