面试题 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;
    }
}

本文链接:https://itarvin.com/detail-169.aspx

登录或者注册以便发表评论

登录

注册