[78] 子集

45 阅读1分钟
/*
 * @lc app=leetcode.cn id=78 lang=javascript
 *
 * [78] 子集 背模板,回溯
 */

// @lc code=start
/**
 * @param {number[]} nums
 * @return {number[][]}
 */
var subsets = function (nums) {
  let result = []

  function backtrack(start, curr) {
    result.push([...curr])
    for (let i = start; i < nums.length; i++) {
      // 1.将其push进去
      curr.push(nums[i])
      // 2.递归调用
      backtrack(i + 1, curr)
      // 3.把数组的最后一位删除
      curr.pop()
    }
  }
  // 调用函数从0开始,把空数组push进去
  backtrack(0, [])
  return result
}
// @lc code=end