列表

详情


78. 子集

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

 

示例 1:

输入:nums = [1,2,3]
输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

示例 2:

输入:nums = [0]
输出:[[],[0]]

 

提示:

相似题目

子集 II

列举单词的全部缩写

字母大小写全排列

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: vector<vector<int>> subsets(vector<int>& nums) { } };

golang 解法, 执行用时: 0 ms, 内存消耗: 2.3 MB, 提交时间: 2021-06-29 16:21:57

func subsets(nums []int) (ans [][]int) {
	n := len(nums)
	for mask := 0; mask < 1<<n; mask++ {
		set := []int{}
		for i, v := range nums {
			if mask>>i&1 > 0 {
				set = append(set, v)
			}
		}
		ans = append(ans, set)
	}
	return
}

golang 解法, 执行用时: 0 ms, 内存消耗: 2.3 MB, 提交时间: 2021-06-29 16:21:14

func subsets(nums []int) (ans [][]int) {
	n := len(nums)
	for mask := 0; mask < 1<<n; mask++ {
		set := []int{}
		for i, v := range nums {
			if mask>>i&1 > 0 {
				set = append(set, v)
			}
		}
		ans = append(ans, append([]int(nil), set...))
	}
	return
}

php 解法, 执行用时: 4 ms, 内存消耗: 15.9 MB, 提交时间: 2021-06-29 16:10:22

class Solution {

    /**
     * @param Integer[] $nums
     * @return Integer[][]
     */
    function subsets($nums) {
        $ans = [[]];
        $n = count($nums);
        foreach ( $nums as $num ) {
            for ( $i = 0, $j = count($ans); $i < $j; $i++ ) {
                $ans[] = array_merge($ans[$i], [$num]);
            }
        }
        return $ans;
    }
}

上一题