当前位置: 首页 > news >正文

【回溯算法】leetcode 78. 子集

78. 子集

文章目录

  • 题目描述
    • 示例1:
    • 示例2:
    • 提示
  • 方法:回溯算法
    • 解题思路
    • 代码
    • 复杂度分析

题目描述

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

示例1:

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

示例2:

输入: nums = [0]
输出: [[],[0]]

提示

  • 1 < = n u m s . l e n g t h < = 10 1 <= nums.length <= 10 1<=nums.length<=10
  • − 10 < = n u m s [ i ] < = 10 -10 <= nums[i] <= 10 10<=nums[i]<=10
  • n u m s 中的所有元素互不相同 nums 中的所有元素 互不相同 nums中的所有元素互不相同

方法:回溯算法

解题思路

其实子集也是一种组合问题,是找树的所有节点,因为它的集合是无序的,子集 {1,2} 和子集 {2,1} 是一样的。

那么既然是无序,取过的元素不会重复取,写回溯算法的时候,for 就要从 startIndex 开始,而不是从0开始!

代码

class Solution {
public:
    vector<vector<int>> result;
    vector<int> path;
    void dfs(int startIndex, vector<int>& nums) {
        result.push_back(path);
        if(startIndex == nums.size()) {
            return;
        }
        for(int i = startIndex; i < nums.size(); i++) {
            path.push_back(nums[i]);
            dfs(i + 1, nums);
            path.pop_back();
        }
    }
    vector<vector<int>> subsets(vector<int>& nums) {
        dfs(0, nums);
        return result;
    }
};

复杂度分析

  • 时间复杂度: O ( n × 2 n ) O(n \times 2^n) O(n×2n)
  • 空间复杂度: O ( n ) O(n) O(n)

相关文章:

  • stm32f4xx-外部中断
  • Tricentis NeoLoad:自动化的企业性能测试平台
  • Linux内核中网络部分结构以及分布
  • 从无到有的基于QT软件的DIY桌面番茄钟(上)
  • Springboot整合ElasticSearch
  • Golang JWT 认证 (三)-添加token自动刷新机制
  • 哈希方法总结
  • 记录get和post的理解误区
  • 2022最全的 App 应 用 测 试 技 巧
  • 【MATLAB教程案例4】直接序列扩频通信系统的MATLAB仿真
  • FORCESPRO的使用教程(暂未完结)
  • Docker 使用 IDEA 内置插件构建上传镜像 与 SSH、FTP 功能使用
  • Clonable 接口 深拷贝与浅拷贝(超详细!!!代码附注释带图)
  • Centos7.4重启提示gurb2/i386-pc/normal.mod not found
  • 开学季·东莞理工学院
  • C学习-枚举(九)
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • JavaScript新鲜事·第5期
  • java中具有继承关系的类及其对象初始化顺序
  • js继承的实现方法
  • PHP的类修饰符与访问修饰符
  • React Native移动开发实战-3-实现页面间的数据传递
  • React-生命周期杂记
  • React组件设计模式(一)
  • Redis的resp协议
  • Spring Cloud中负载均衡器概览
  • vue总结
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 基于组件的设计工作流与界面抽象
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 让你的分享飞起来——极光推出社会化分享组件
  • 如何在GitHub上创建个人博客
  • 设计模式走一遍---观察者模式
  • 主流的CSS水平和垂直居中技术大全
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • HanLP分词命名实体提取详解
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​HTTP与HTTPS:网络通信的安全卫士
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (九)c52学习之旅-定时器
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (三)mysql_MYSQL(三)
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET 服务 ServiceController
  • .net实现客户区延伸至至非客户区
  • .Net中的设计模式——Factory Method模式
  • .net中调用windows performance记录性能信息