78. 子集
2019-08-06 11:08 前端小白的江湖路 阅读(94) 评论(0) 编辑 收藏 举报问题
给定一组不含重复元素的整数数组 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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架