算法设计与应用基础:第十七周(2)
来源:互联网 发布:人工智能语音机器人 编辑:程序博客网 时间:2024/06/08 02:16
90. Subsets II
DescriptionHintsSubmissionsSolutions
- Total Accepted: 108212
- Total Submissions: 305272
- Difficulty: Medium
- Contributor: LeetCode
Given a collection of integers that might contain duplicates, nums, return all possible subsets.
Note: The solution set must not contain duplicate subsets.
For example,
If nums = [1,2,2]
, a solution is:
[ [2], [1], [1,2,2], [2,2], [1,2], []]
Subscribe to see which companies asked this question.
解题思路:采取每次取一个元素或者不取的方法(前提是先对原数组排序),处理有重复元素的方法就是判断每次要取的元素是否和之前一个元素相等,如果相等就continue,因为这个元素无论取不取都已经包含在上一个元素的情况中了(剪枝),代码如下
class Solution { public: vector<vector<int> > subsetsWithDup(vector<int> &S) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<int> path; vector<vector<int> > result; sort(S.begin(), S.end()); sub(S, 0, path, result); return result; } void sub(vector<int> &s, int begin, vector<int> &path, vector<vector<int> > &result) { result.push_back(path); for (int i = begin; i < s.size(); ++i) { if (i != begin && s[i] == s[i - 1]) continue; path.push_back(s[i]); sub(s, i + 1, path, result); path.pop_back(); } } };
补充:对于有重复元素的处理方法,排序判断是否进行循环。
阅读全文
0 0
- 算法设计与应用基础:第十七周(2)
- 算法设计与应用基础:第十七周(1)
- 算法设计与结构基础作业第十七周
- 算法设计与应用基础:第二周(2)
- 算法设计与应用基础: 第三周(2)
- 算法设计与应用基础: 第五周(2)
- 算法设计与应用基础: 第六周(2)
- 算法设计与应用基础:第十周(2)
- 算法设计与应用基础:第十二周(2)
- 算法设计与应用基础:第十三周(2)
- 算法设计与应用基础:第十五周(2)
- 第十七周算法设计与分析:Minesweeper
- 算法设计与应用基础-第二周
- 算法设计与应用基础:第三周
- 算法设计与应用基础-第三周
- 算法设计与应用基础-第五周
- 算法设计与应用基础:第五周
- 算法设计与应用基础-第六周
- imgproc模块--基本阈值操作
- Java产生死锁的一个简单例子
- idea tomcat 怎样出现update classes and resources
- 深入理解 Java 虚拟机--Java 内存模型与线程
- 概率图模型7:推理与流动
- 算法设计与应用基础:第十七周(2)
- (10)高通AP10.4开发者指南——WLAN(2.4 Queue管理)
- lua,使用sleep的各种方法
- 第1.1章 docker之centos6.*
- Visual Studio 2010 单元测试之一---普通单元测试
- ionic emulate实时调试修改
- 分割nohup.out文件
- javascript面向对象编程
- 关于idea 修改jsp文件后不能生效