关于javascript:JavaScript-求数组的所有子集

5次阅读

共计 405 个字符,预计需要花费 2 分钟才能阅读完成。

一、题目要求

给定义一个子项不反复的数组,求此数组的所有子集。

二、思路

设有一个二进制变量,其长度刚好等于数组长度。
用这个变量的每一位来代表数组中的每一个子项,为 0 则无,为 1 则有,则这个变量的每一个可能的值映射的数组都是数组的一个子集(排除最大的一位数,也就是全为 1 的时候)。

三、题解

代码如下:

function subsets(nums){const {length} = nums;
    const maximum = 2 ** length;
    const res = [];
    for(let index = 0; index < maximum; index ++){const tempArr = [];
        for(let subIndex = 0; subIndex < length; subIndex++){if(index & (1 << subIndex)){tempArr.push(nums[subIndex]);
            }
        }
        res.push(tempArr);
    }
    return res
}
正文完
 0