leetcode幂集
1.辅助数组
设置一个保存结果的数组res,首先插入空元素
然后遍历Nums数组,对于数组中的每一个元素,都遍历res中每一个集合res[j],将Nums[i]插如到res[j],然后在插入到res中
如 1 2 3
初始为[]
对1,res为[],插入1,变成[],1
对2,res为[],1 插入2,变成[]、1、2、1 2
对3,res为[]、1、2、1 2 插入3 ,变成[]、1、2、1 2、3、1 3、2 3、1 2 3
代码如下:
class Solution {
public:vector<vector<int>> subsets(vector<int>& nums) {//模拟手动,如数字为3 1初始为[],插入3,则变为[]、3,插入1,则变为[]、3、1、3 1vector<vector<int>>res;res.push_back({});int i=0;while(i<nums.size()){int size=res.size();for(int j=0;j<size;j++){vector<int> ans(res[j].begin(),res[j].end());ans.push_back(nums[i]);res.push_back(ans);}i++;}return res;}
};
2.位运算
考虑1 2 3,对于每一个元素都有插入与不插入,设插入对应1 ,不插入对应0,
这里将1 2 3 变为3 2 1 更好理解,如下:
0 0 0 对应0 对应[]
0 0 1 对应1 对应1
0 1 0 对应2 对应2
0 1 1 对应3 对应1 2
1 0 0 对应4 对应3
1 0 1 对应5 对应3 1
1 1 0 对应6 对应3 2
1 1 1 对应7 对应3 2 1
长为len的数组集合个数为Pow(2,len)
代码如下:
class Solution {
public:vector<vector<int>> subsets(vector<int>& nums) {//模拟手动,如数字为3 1初始为[],插入3,则变为[]、3,插入1,则变为[]、3、1、3 1vector<vector<int>>res;res.push_back({});for(int i=1;i<pow(2,nums.size());i++){vector<int> ans;int num=i,idx=0;while(num!=0){if((num&1)==1)ans.push_back(nums[idx]);num>>=1;idx++;}res.push_back(ans);}return res;}
};
leetcode幂集相关推荐
- leetcode每日一题--前缀树;前缀哈希;深搜;面试题 08.04. 幂集;648. 单词替换面试题 01.09. 字符串轮转;剑指 Offer II 062. 实现前缀树
leetcode每日一题 ps:今天的每日一题没意思,简单的模拟,自己换一道 面试题 08.04. 幂集 幂集.编写一种方法,返回某集合的所有子集.集合中不包含重复的元素. 说明:解集不能包含重复的子 ...
- leetcode/求幂集,所有子集
代码 package com.xcrj;import java.util.ArrayList; import java.util.List;/*** 剑指 Offer II 079. 所有子集,幂集* ...
- leetcode面试题 08.04. 幂集(递归)
幂集.编写一种方法,返回某集合的所有子集.集合中不包含重复的元素. 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3 ...
- 【Leetcode】刷题之路4(python版)
接上章回溯专题,本章挑选了分割问题.子集问题.排列问题. 分割问题 131.分割回文串 93.复原IP地址 子集问题 78.子集 90.子集II 排列问题 46.全排列 47.全排列II 分割问题 我 ...
- 数据结构与算法:16 Leetcode同步练习(六)
Leetcode同步练习(六) 目录 题目01:相同的树 题目02:对称二叉树 题目03:二叉树的最大深度 题目04: Pow(x, n) 题目05:子集 题目06:格雷编码 题目07:二叉树的最近公 ...
- LeetCode实战:子集
题目英文 Given a set of distinct integers, nums, return all possible subsets (the power set). Note: The ...
- LeetCode 78. 子集
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3] 输出: [[3],[1],[2],[1,2, ...
- LeetCode 90子集Ⅱ91解码方法
微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...
- Leetcode 76最小覆盖子串77组合78子集
新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打 ...
- LeetCode——Backtracking
Backtracking 目录 Backtracking 数字键盘组合 IP 地址划分 在矩阵中寻找字符串 输出二叉树中所有从根到叶子的路径 排列 含有相同元素求排列 组合 组合求和 含有相同元素的组 ...
最新文章
- SpringBoot如何验证用户上传的图片资源
- oracle trunc()截断函数
- Python TeamViewer批量提交密码重置--分析与实现
- HDU2087剪花布条
- 【MM模块】ASAP 项目实施方法简介
- Java中获取Date的昨天代码实现
- linux启动管理,Linux启动管理 详述
- WPF特效-粒子动画
- 传输层学习之五(TCP的SACK,F-RTO)
- 阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_6 自定义类型转换器代码编写
- 文华wh6如何修改服务器,文华财经 软件特色功能介绍修改
- python中文文本聚类_Python3文本聚类如何进行分类操作?
- AUTOCAD——光顺曲线命令、分解命令
- 省市级联实现,并根据IP自动获取省市
- matlab 对数回归,对数拟合
- 背景图片与图片对盒子的影响
- 信号强度 android,一种获取手机信号强度的方法
- 一支笔的测试点_如何测试一支笔
- 解决文件上传重名的方案
- 8、店铺分类 - 后端功能开发 - 微擎小程序模块应用开发