`

subsets(C++实现)

 
阅读更多

Given a set of distinct integers, S, return all possible subsets.

Note:

  • Elements in a subset must be in non-descending order.
  • The solution set must not contain duplicate subsets.

 

For example,
If S = [1,2,3], a solution is:

[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]

 

class Solution {
public:
    vector<vector<int> > subsets(vector<int> &S) {
        vector<vector<int> > ret;
        if(S.size() == 0) return ret;
        sort(S.begin(), S.end());
        vector<int> tmp;
        dfs(S, 0, tmp, ret);
        return ret;
    }
    
    void dfs(vector<int> &S, int beg, vector<int> tmp, vector<vector<int> > &ret) {
        ret.push_back(tmp);
        if(beg >= S.size()) return;
        for(int i = beg; i < S.size(); ++i) {
            tmp.push_back(S[i]);
            dfs(S, i+1, tmp, ret);
            tmp.pop_back();
        }
    }
};

 

欢迎关注微信公众号——计算机视觉:

 

0
0
分享到:
评论

相关推荐

    c++-c++编程基础之leetcode题解第78题子集.zip

    一个常见的解决方案是使用DFS,以下是一个基本的C++实现: ```cpp #include #include using namespace std; void subsets(vector&lt;int&gt;& nums, vector&lt;vector&lt;int&gt;&gt;& res, vector&lt;int&gt;& temp, int start) { // ...

    Modern C++ 11 知识点

    unordered_map是基于哈希表实现的,可以快速访问元素而无需排序。unordered_map的count方法可以在不创建元素的情况下检查是否存在某个键。map和unordered_map支持erase方法和迭代器。除了操作符==和!=外,还提供了...

    UML类图中的接口与接口实现

    2. **C++**:C++并不直接支持接口概念,但可以通过定义带有纯虚函数的抽象基类来模拟接口的行为。这种抽象基类不能被实例化,但可以被继承,并要求派生类实现所有纯虚函数。 综上所述,UML中的接口及其实现机制是...

    subsets:在c c ++ python中,集合的子集变为ruby。 信息竞技场

    在C/C++中,你可以通过位操作来高效地生成一个集合的所有子集。利用整数的二进制表示,你可以遍历从0到2^n-1(n为集合元素个数)的所有整数,将每位视为集合中的一个元素,如果该位为1,则将该元素放入当前子集中。 ...

    Leetcode部分解答(126题)

    本压缩包包含了一些LeetCode上的经典问题的C++解冑,让我们逐一解析这些题目及其解决方案。 1. **Palindrome Partitioning (mine).cpp** - 这个文件是关于LeetCode的第131题“回文分割”。该问题要求将一个字符串...

    CT图像ART重建

    4. **拓展与改进**:为了解决ART算法的问题,后续研究提出了多种改进方法,如OART(Ordered Subsets ART)、FART(Filtered ART)等,它们引入了滤波器或子集优化策略,提高了重建效率和图像质量。 综上所述,CT...

    OSEM.rar_图形图像处理_Visual_C++_

    OSEM(Ordered Subsets Expectation-Maximization)算法是一种在图像重建领域广泛应用的迭代方法,特别是在正电子发射断层扫描(PET,Positron Emission Tomography)和计算机断层扫描(CT,Computed Tomography)等...

    leetcode写题闪退-LeetCode:leetcodeOJ

    C++实现时那个返回值是void也着实让我困惑了好久 Subsets DFS实现,竟然还WA了好几次。 Climbing Stairs 入门级记忆化dp 2014.10.30 Merge Sorted Array 归并排序基础 Remove Duplicates from Sorted List 脑残简单...

    手稿_V1.15

    总结,本文介绍了如何使用C++解决LeetCode中的子集问题,探讨了两种方法:二进制位遍历和回溯法,并详细解析了代码实现。这两种方法各有优缺点,但在实际应用中可以根据问题规模和性能需求选择合适的方法。

    手稿_V1.030

    题目描述的是一个经典的编程问题,来源于LeetCode上的"子集II"(Subsets II,编号为101)题目。该问题要求找到一个整数数组中所有不含有重复元素的子集(幂集),并确保结果中不包含重复的子集。 在给定的代码中,...

    1.9 集合划分问题

    在C++中,实现集合划分问题的递归算法通常包括以下步骤: 1. **定义数据结构**:首先,定义一个数据结构来表示集合,例如使用`std::vector&lt;int&gt;`存储整数元素。 2. **基本情况**:确定递归的终止条件,这通常是当...

    学习c语言你该知道的单词

    - **生成子集(Generating Subsets)**:生成集合的所有子集是另一种常见的组合问题,同样可以通过递归算法实现。 ### 图论问题 - **连通性(Connected Components)**:连通组件是指图中彼此可达的顶点集合,对于...

    集合运算.zip

    在大多数编程语言中,如C++、Python和Java,都有内置的集合类型,如set或HashSet。它们支持基本操作,如添加元素、删除元素、检查元素是否存在以及求集合的并、交、差等。 2. **并集(Union)**:两个集合的所有元素...

    Algorithm for programmer

    - **描述**:这本书有900多页,内容非常全面,提供了C/C++语言的实现代码,并且是一本不断更新、最新的版本。 - 本书是一本非常详尽的算法参考书,它包含了大量的算法知识,不仅适合初学者学习,也适合资深开发者...

Global site tag (gtag.js) - Google Analytics