{
  "type": "code_options",
  "author": "csdn.net",
  "source": "solution.md",
  "exercise_id": "27b64952c3664c57937b088669d428f6",
  "keywords": "位运算,数组,回溯",
  "title": "子集",
  "desc": [
    {
      "content": "\n<p>给你一个整数数组 <code>nums</code> ，数组中的元素 <strong>互不相同</strong> 。返回该数组所有可能的子集（幂集）。</p><p>解集 <strong>不能</strong> 包含重复的子集。你可以按 <strong>任意顺序</strong> 返回解集。</p><p> </p><p><strong>示例 1：</strong></p><pre><strong>输入：</strong>nums = [1,2,3]<strong><br />输出：</strong>[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]</pre><p><strong>示例 2：</strong></p><pre><strong>输入：</strong>nums = [0]<strong><br />输出：</strong>[[],[0]]</pre><p> </p><p><strong>提示：</strong></p><ul>\t<li><code>1 <= nums.length <= 10</code></li>\t<li><code>-10 <= nums[i] <= 10</code></li>\t<li><code>nums</code> 中的所有元素 <strong>互不相同</strong></li></ul>",
      "language": "markdown"
    }
  ],
  "answer": [
    {
      "content": "",
      "language": "java"
    }
  ],
  "prepared": [
    [
      {
        "content": "",
        "language": "java"
      }
    ],
    [
      {
        "content": "",
        "language": "java"
      }
    ],
    [
      {
        "content": "",
        "language": "java"
      }
    ]
  ],
  "template": {
    "content": "class Solution {\n\tpublic List<List<Integer>> subsets(int[] nums) {\n\t\tList<List<Integer>> res = new ArrayList<List<Integer>>();\n\t\tList<Integer> tmp = new ArrayList<>();\n\t\tres.add(tmp);\n\t\tif (nums.length == 0)\n\t\t\treturn res;\n\t\thelper(nums, 0, tmp, res);\n\t\treturn res;\n\t}\n\n\tpublic void helper(int[] nums, int start, List<Integer> tmp, List<List<Integer>> res) {\n\t\tfor (int i = start; i < nums.length; i++) {\n\t\t\ttmp.add(nums[i]);\n\t\t\thelper(nums, i + 1, tmp, res);\n\t\t\tres.add(new ArrayList<Integer>(tmp));\n\t\t\ttmp.remove(tmp.size() - 1);\n\t\t}\n\t}\n}",
    "language": "java"
  },
  "node_id": "dailycode-9d0fc0cf99704e4684d62717fcf0025e",
  "license": "csdn.net",
  "created_at": 1637894158,
  "topic_link": "https://bbs.csdn.net/topics/600469824"
}