LeetCode 90.子集 II 中等难度
90. 子集 II
题目:
给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:输入: [1,2,2]
输出:
[[2],[1],[1,2,2],[2,2],[1,2],[]
]
解题思路:
跟我之前的上一道题目类似,也是递归调用,回溯算法。只不过多了重复问题,也就是【1,2,2】跟【2,1,2】是同一个元素,不能重复输出。
那么我们只需要把深度优先搜索的每层的数字先排序,也就是确保最后输出的结果是【1,2,2】跟【1,2,2】,然后再利用set去重就行了。
代码:
class Solution {public:vector<vector<int>> subsetsWithDup(vector<int>& nums) {vector<int> temp;vector<vector<int>> result;sort(nums.begin(),nums.end()); //首先要先把每层的数字先排序,就这样就可以排除先后相等的问题generate(0,nums,temp,result); set<vector<int>> st(result.begin(), result.end()); //把有重复的结果放在set里,去重复result.assign(st.begin(), st.end()); //最后再把set里去重复的结果放回vector里return result;}
private://深度优先搜索void generate(int i,vector<int>&nums, vector<int> &temp, vector<vector<int>> &result){if(i==nums.size()){ result.push_back(temp); return;}temp.push_back(nums[i]);generate(i+1,nums,temp,result);temp.pop_back();generate(i+1,nums,temp,result);}
};
LeetCode 90.子集 II 中等难度相关推荐
- LeetCode 90. 子集 II【数组,回溯算法,排序去重】
90. 子集 II 给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集). 解集 不能 包含重复的子集.返回的解集中,子集可以按 任意顺序 排列. 示例 1: 输入 ...
- leetcode 90. 子集 II 思考分析
与本题相关联的题目解析: leetcode 78. 子集 思考分析 leetcode 40. 组合总和 II思考分析 题目 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集 ...
- LeetCode 90. 子集 II(回溯+剪枝)
文章目录 1. 题目信息 2. 解题 2.1 循环 2.2 回溯 1. 题目信息 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例 ...
- Leetcode 90. 子集 II 解题思路及C++实现
解题思路: 经典的深度优先搜索问题. 这里,根据子集的元素个数 i ,分别进行 dfs .因为 nums 数组中有重复元素,所以在 dfs 程序中,需要有一个去重的判断. 判断逻辑为:当前元素与上一个 ...
- leetcode 90. 子集 II(回溯算法)
给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集). 解集 不能 包含重复的子集.返回的解集中,子集可以按 任意顺序 排列. 示例 1: 输入:nums = [1 ...
- [leetcode]90. 子集 II
bitmasking: 歪打正着,想着跟子集1(没有重复的元素)差不多,去下重就好了,然后没排序,然后就出现了重复的子集,然后排下序观察输出,然后就好了???,然后发现没排序重复是因为有的子集包含的元 ...
- 回溯模板+leetcode——78. 子集 + 90. 子集 II
回溯法 一般情况下,看到题目要求「所有可能的结果」,而不是「结果的个数」,我们就知道需要暴力搜索所有的可行解了,可以用「回溯法」. 「回溯法」实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻 ...
- 【暴力枚举】LeetCode 90. Subsets II
LeetCode 90. Subsets II solution1和2均是利用set的,3和4是不利用set的 Solution1:我的答案 迭代法 class Solution { public:v ...
- leetcode系列-90.子集 II
leetcode系列–第90题.子集 II 做此题之前务必先做 第78题题目描述: 给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集). 解集 不能 包含重复的子 ...
最新文章
- NeHe OpenGL教程 第四十课:绳子的模拟
- 通过代码动态创建IIS站点
- h3c 3600 交换机配置Telnet登录
- 第四十七期:漫画:什么是公有云、私有云和混合云?
- centos8搭建nsis交叉编译环境
- postman压测_只会postman单接口测试?快看看这里
- 企业级的Java快速开发平台,首选iMatrix平台。
- 接口中定义的成员变量是( )。_C++:如何正确的定义一个接口类
- PCAN-Explorer5安装教程
- 量子笔记:酉矩阵(幺正矩阵)、量子门的可逆性
- 美国大学计算机理论专业phd,揭秘美国大学计算机专业PHD申请难度
- 在centos上安装pycharm
- 卢亮/明珠的博客吧开张了……
- anbox 使用情况_如何在Linux PC上启动并运行Anbox?
- 搭建asp会议签到系统:第一章 账密登录
- linux machine start,Linux中的MACH定义之MACHINE_START / MACHINE_END
- Eclipse安装PMD插件
- tqdm的使用和例子
- 2022-11-12-读书
- 阿里云服务器CentOs中安装elasticsearch7.13.1