asp.net做网站的步骤,wordpress购物分享主题,怎么做触屏版网站,seo优化销售话术文章目录1. 题目信息2. 解题2.1 暴力回溯2.2 循环2.3 位运算1. 题目信息
给定一组不含重复元素的整数数组 nums#xff0c;返回该数组所有可能的子集#xff08;幂集#xff09;。
说明#xff1a;解集不能包含重复的子集。
示例:输入: nums [1,2,3]
输出:
[[3],[1],[2…
文章目录1. 题目信息2. 解题2.1 暴力回溯2.2 循环2.3 位运算1. 题目信息
给定一组不含重复元素的整数数组 nums返回该数组所有可能的子集幂集。
说明解集不能包含重复的子集。
示例:输入: nums [1,2,3]
输出:
[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]
]来源力扣LeetCode 链接https://leetcode-cn.com/problems/subsets 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。
2. 解题
2.1 暴力回溯 class Solution {
public:vectorvectorint subsets(vectorint nums) {vectorint sub;vectorvectorint ans;bt(nums, sub, ans, 0);return ans;}void bt(vectorint nums, vectorint sub, vectorvectorint ans, int i){if(i nums.size()){ans.push_back(sub);return;}bt(nums, sub, ans, i1);//不加入nums[i]sub.push_back(nums[i]);bt(nums, sub, ans, i1);//加入nums[i]}
};or
class Solution {
public:vectorvectorint subsets(vectorint nums) {vectorint sub;vectorvectorint ans;ans.push_back({});bt(nums,sub,ans,0);return ans;}void bt(vectorint nums,vectorint sub, vectorvectorint ans, int i){for(int idx i; idx nums.size(); idx){sub.push_back(nums[idx]);ans.push_back(sub);bt(nums,sub,ans,idx1);sub.pop_back();}}
};2.2 循环 class Solution {
public:vectorvectorint subsets(vectorint nums) {vectorvectorint ans;ans.push_back({});vectorint sub;int i, j, n;for(i 0; i nums.size(); i){n ans.size();//注意提前记录sizefor(j 0; j n; j){sub ans[j];sub.push_back(nums[i]);ans.push_back(sub);}}return ans;}
};2.3 位运算
对例子来讲一共8种情况对应的二进制位000,001,010,011,100,101,110,111每次内层循环把为1的位对应的数字取出来就是所有组合
class Solution {
public:vectorvectorint subsets(vectorint nums) {vectorvectorint ans;int i, j, k pow(2,nums.size());for(i 0; i k; i){vectorint sub;for(j 0; j nums.size(); j){if(i (1j))sub.push_back(nums[j]);}ans.push_back(sub);}return ans;}
};