주어진 배열의 멱집합을 구하는 문제
재귀함수를 통해서 중복이 되지 않는 모든 부분 집합을 구한다. 주어진 배열을 미리 정렬을 한 후 객체를 이용하여 중복 체크를 했다.
var subsetsWithDup = function (nums) {
const answer = [];
const check = {};
nums.sort((a, b) => a - b);
function solve(lastPick, pick) {
if (!check[pick]) {
check[pick] = 1;
answer.push([...pick]);
}
for (let i = lastPick + 1; i < nums.length; ++i)
solve(i, [...pick, nums[i]]);
}
solve(-1, []);
return answer;
};