Subsets

MediumArrayBacktrackingBit Manipulation

Solution

export function subsets(nums: number[]): number[][] {
  const n = nums.length;
  const answer: number[][] = [];
 
  function dfs(currentIndex: number, subset: number[]) {
    if (n <= currentIndex) {
      answer.push([...subset]);
      return;
    }
    subset.push(nums[currentIndex]);
    dfs(currentIndex + 1, subset);
    subset.pop();
    dfs(currentIndex + 1, subset);
  }
 
  dfs(0, []);
  return answer;
}