/**
* @param {number[]} nums
* @return {number[][]}
*/
var subsets = function(nums) {
if (nums.length === 0) return [[]];
let resArr = [];
backtrack(nums, 0, [], resArr);
return resArr;
};
function backtrack(nums, index, subArr, resArr) {
if (Array.isArray(subArr)) {
resArr.push(subArr.slice());
}
if (index === nums.length) {
return;
}
for (let i = index; i < nums.length; i++) {
subArr.push(nums[i]);
backtrack(nums, i + 1, subArr, resArr);
subArr.pop(nums[i]);
}
}