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

    问题

    给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。

    说明:解集不能包含重复的子集。

    示例:

    输入: nums = [1,2,3]
    输出:
    [
    [3],
      [1],
      [2],
      [1,2,3],
      [1,3],
      [2,3],
      [1,2],
      []
    ]

    解法1

    以常规思维来思考,先找出个数为1,然后个数为2,然后个数为3的

    /**
     * @param {number[]} nums
     * @return {number[][]}
     */
    var subsets = function(nums) {
      let result = [[], ],
        start,
        end;
    
      for(let i=0; i<nums.length; ++i) {
        result.push([nums[i]]);
      }
    
      start = 1,
      end = result.length-1;
      for(let m = 0; m<nums.length-1; ++m) {
        end = result.length - 1;
        while(start <= end) {
          let n = nums.indexOf(result[start][result[start].length-1]) + 1;
          for(let i=n; i<nums.length; ++i) {
            result.push([...result[start], nums[i]]);
          }
          start++;
        }
      }
      return result;
    };

    例如输入[1, 2, 3] ,输出为[[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]

    解法二

    每次新加入一个元素,然后与前面的元素组合

    var subsets = function (nums) {
      let result = [[]];
      for(let i=0; i<nums.length; ++i) {
        let len = result.length;
        for(let j=0; j<len; ++j) {
          result.push([...result[j], nums[i]]);
        }
      }
      return result;
    }
  • 相关阅读:
    JSTL标签用法
    (转)javascript正则实战
    Spring中几种数据源的配置
    (转)常用正则表达式
    EL表达式详解
    JAVA环境变量配置(转)
    S2SH整合步骤
    正则表达式30分钟教程(转)
    在Flash Player 10.2中使用原生鼠标指针
    time
  • 原文地址:https://www.cnblogs.com/cheng-up/p/11307743.html
Copyright © 2011-2022 走看看