• leetcode 78. 子集 js 实现


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

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

    示例 1:

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

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

    提示:

    1 <= nums.length <= 10
    -10 <= nums[i] <= 10
    nums 中的所有元素 互不相同


    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/subsets

    /**
     * @param {number[]} nums
     * @return {number[][]}
     */
    var subsets = function (nums) {
        const t = []; // 临时子集数组
        const ans = []; // 结果数组
        const dfs = (cur) => {
            // 递归退出条件,当遍历到当前索引值为数组长度时,将子集拷贝并 push 到结果数组
            if (cur === nums.length) {
                // 这里 slice 的原因为拷贝数组,避免后续对t的修改从而影响 push 进去的数组
                ans.push(t.slice());
                return;
            }
            // 构建子集数组
            t.push(nums[cur]);
            // 同时给当前索引值+1,进行递归
            dfs(cur + 1);
            // 递归退出后才会进入当前语句,索引值从高到低执行
            t.pop(t.length - 1);
            // 再次进入递归,会再次构建子集数组
            dfs(cur + 1);
        };
        // 从索引值 0 开始
        dfs(0);
        return ans;
    };
    subsets([1, 2]);
  • 相关阅读:
    前后端分类状态下SpringSecurity的玩法
    拓展 centos 7
    linux 日志管理
    Linux 内存监控
    Linux 周期任务
    Linux 文件系统
    linux 磁盘管理
    图论 最短路总结
    进阶线段树之乘法操作
    暑假集训Day 10 小烈送菜
  • 原文地址:https://www.cnblogs.com/beileixinqing/p/16691591.html
Copyright © 2020-2023  润新知