⬆︎
×

[LC] 0078 Subsets

Java

import java.util.ArrayList;
import java.util.List;

/**
 * <a href="https://leetcode.cn/problems/subsets/">Subsets</a>
 * 位运算;数组;回溯
 */
class Solution {
    public List<List<Integer>> subsets(int[] nums) {
        List<List<Integer>> res = new ArrayList<>();
        dfs(0, nums, new ArrayList<>(), res);
        return res;
    }

    private void dfs(int cur, int[] nums, List<Integer> path, List<List<Integer>> res) {
        if (cur == nums.length) {
            res.add(new ArrayList<>(path));
            return;
        }
        path.add(nums[cur]);
        dfs(cur + 1, nums, path, res);
        path.remove(path.size() - 1);
        dfs(cur + 1, nums, path, res);
    }
}

Go

func subsets(nums []int) (res [][]int) {
    var dfs func(int, []int)
    dfs = func(cur int, path []int) {
        if cur == len(nums) {
            res = append(res, append([]int(nil), path...))
            return
        }
        path = append(path, nums[cur])
        dfs(cur+1, path)
        path = path[:len(path)-1]
        dfs(cur+1, path)
    }
    dfs(0, []int{})
    return
}

JavaScript

/**
 * @param {number[]} nums
 * @return {number[][]}
 */
var subsets = function (nums) {
    let res = [];
    let dfs = function (cur, path) {
        if (cur === nums.length) {
            res.push(path.slice());
            return;
        }
        path.push(nums[cur]);
        dfs(cur + 1, path);
        path.pop();
        dfs(cur + 1, path);
    }
    dfs(0, []);
    return res;
};

PHP

class Solution {

    /**
     * @param Integer[] $nums
     * @return Integer[][]
     */
    function subsets(array $nums): array {
        $res = [];
        $this->dfs(0, $nums, [], $res);
        return $res;
    }

    private function dfs($cur, $nums, $path, &$res): void {
        if ($cur == count($nums)) {
            $res[] = $path;
            return;
        }
        $path[] = $nums[$cur];
        $this->dfs($cur + 1, $nums, $path, $res);
        array_pop($path);
        $this->dfs($cur + 1, $nums, $path, $res);
    }
}

发表评论