面试题 08.04:幂集

简介: 面试题 08.04:幂集

题目

题目链接

幂集。编写一种方法,返回某集合的所有子集。集合中不包含重复的元素。

说明:解集不能包含重复的子集

示例:

输入: nums = [1,2,3]
 输出:
[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]

解题

方法一:回溯

class Solution {
public:
    vector<vector<int>> res;
    vector<int> path;
    void backtracing(vector<int>& nums,int startIndex){
        if(startIndex>nums.size()) return;
        else res.push_back(path);
        for(int i=startIndex;i<nums.size();i++){
            path.push_back(nums[i]);
            backtracing(nums,i+1);
            path.pop_back();
        }
    }
    vector<vector<int>> subsets(vector<int>& nums) {
        backtracing(nums,0);
        return res;
    }
};
相关文章
|
算法 安全 Java
面试题30天打卡-day29
面试题30天打卡-day29
46 0
|
Java 关系型数据库 MySQL
面试题30天打卡-day03
面试题30天打卡-day03
26 0
|
NoSQL Java Go
面试题30天打卡-day02
面试题30天打卡-day02
48 0
|
消息中间件 设计模式 关系型数据库
面试题30天打卡-day08
面试题30天打卡-day08
27 0
|
5月前
|
存储 算法 编译器
C++面试题其一
C++文件编译与执行的四个阶段 预处理:处理#include、#define等预处理指令。 编译:将源码翻译为目标代码。 汇编:将目标代码转换为机器指令。 链接:将目标文件和库文件合并生成可执行文件。 STL中的vector的实现,是怎么扩容的? vector通过动态数组实现,当容量不足时,分配更大的内存(通常是原来的两倍),复制旧数据到新内存,并释放旧内存。
77 2
|
5月前
|
存储 程序员 编译器
C++面试题其二
extern "C" 用于告诉编译器按照C语言的链接方式处理代码,通常用于C++代码与C代码混合编程,以防止因名字修饰(name mangling)引起的链接错误。例如: extern "C" { void c_function(); } 通过这些问题的深入理解和解答,能够更好地掌握C++编程的核心概念和实际应用,为面试做好充分的准备。
70 1
|
6月前
|
网络协议 NoSQL 数据库
C++面试题
C++面试题
|
6月前
|
JavaScript 前端开发
面试题总结
面试题总结
30 0
|
存储 Java 数据库连接
面试题30天打卡-day17
面试题30天打卡-day17
31 0
|
算法 应用服务中间件 开发工具
面试题30天打卡-day30
面试题30天打卡-day30
55 0