zoukankan      html  css  js  c++  java
  • 78.子集

    2020-07-07
    子集
    给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
    说明:解集不能包含重复的子集。
    题解:
    思路1:递归+回溯
    var subsets = function (nums) {
      let n = nums.length;
      let res = []; // 结果数组
      // 这里的tmpPath是前一次的子集 往该子集插入新的元素 生成新的子集
      // start 是前一次子集的长度 也是当前要求集合的长度-1
      let backtrack = (tmpPath, start) => {
        res.push(tmpPath); // 每次进入函数 把当前tmp放入到结果res中
        for (let i = start; i < n; i++) { // 根据start确定 下一个要放入tmpPath中的是哪一项
          // 例如 当tmpPath = [1,2] 时, start = 2 则要从 nums的下标为2的项开始 也就是3 放入tmp中
          // 形成下一次递归用的tmp=[123], start+1
          // 递归backtrack 把[123]放入res中 start=3 for循环中找到的是第三项也就是4 形成[1234] 再递归
          // 递归将[1234]放入res中 递归结束 删掉4 退回上一次递归 
          // 3处理完 把3删掉 i++从2 => 3 这次要放入的是4形成[124]。。。
          tmpPath.push(nums[i]);
          backtrack(tmpPath.slice(), i + 1);
          tmpPath.pop();
        }
      }
      backtrack([], 0);
      return res;
    };

  • 相关阅读:
    实训课报告
    java第二次作业
    Java程序设计第一次作业
    【Vue】 编写Vue插件流程
    【JavaScript】 ES6/ES7/ES8
    【vue】 项目接口管理
    【微信小程序】 线上环境搭建
    【微信小程序】 授权登陆
    Mock 基本使用
    fetch 基本使用(使用fetch、axios来替代ajax)
  • 原文地址:https://www.cnblogs.com/lanpang9661/p/13261829.html
Copyright © 2011-2022 走看看