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

数据结构与算法之递归: LeetCode 78. 子集 (Typescript版)

子集

  • https://leetcode.cn/problems/subsets/

描述

  • 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
  • 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

示例 1

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

示例 2

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

提示

  • 1 <= nums.length <= 10
  • -10 <= nums[i] <= 10
  • nums 中的所有元素 互不相同

算法实现

1 )回溯1: 逐步放宽长度

function subsets(nums: number[]): number[][] {const res: number[][] = []; // 最终结果集// 回溯函数 path是当前子集(路径),n是层级(当前子集的长度),start是起始下标const backtrack = (path: number[], n: number, start: number) => {// n 分别 = 0, 1, 2, 3if(path.length === n) {res.push(path); // 本次长度达标后, 结束return;}// 没达到n的时候,基于当前path, 继续从nums中组合元素添加元素进入下一轮验证for(let i: number = start; i < nums.length; ++i) {backtrack(path.concat(nums[i]), n, i+1);}}// 这里是 0 ~ n 闭区间,从 0的个数 开始找子集for(let i: number = 0; i <= nums.length; ++i) {backtrack([], i, 0);}return res;
}
  • 解题思路

    • 要求,1.所有子集,没有重复元素
    • 有出路,有死路
    • 考虑回溯
  • 解题步骤

    • 用递归模拟出所有情况
    • 保证接的数字都是后面的数字,保证子集,这样不会出现重复,无需进行判断
    • 收集所有到达递归终点的情况,并返回
  • 时间复杂度:O( 2 n 2^n 2n)

    • 每个元素都有两种可能,存在/不存在
  • 空间复杂度:O(n)

    • 依然看递归的深度
    • 递归堆栈

2 )这个题目有很多种解法,后续补充 TODO

相关文章:

数据结构与算法之递归: LeetCode 78. 子集 (Typescript版)

子集 https://leetcode.cn/problems/subsets/ 描述 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1 输入&#xff1a;nums [1,2,3]…...

C# 使用 Fody 监控方法执行时间

写在前面 在做性能调优的时候&#xff0c;经常需要跟踪具体方法的执行时间&#xff1b;通过插入Stopwatch的方案对代码的侵入性太高了&#xff0c;所以引入了 MethodTimer.Fody 类库&#xff0c;采用编译时注入的方式给方法动态加上Stopwatch 跟踪代码&#xff0c;只需要在目标…...

J2EE征程——第一个纯servletCURD

第一个纯servletCURD 前言在此之前 一&#xff0c;概述二、CURD1介绍2查询并列表显示准备实体类country编写 CountryListServlet配置web.xml为web应用导入mysql-jdbc的jar包 3增加准备增加的页面addc.html编写 CAddServlet配置web.xml测试 4删除修改CountryListServlet&#xf…...

BatchOutput PDF for Mac(PDF 批量处理软件)

BatchOutput PDF是一款适用于 Mac 的 PDF 批量处理软件。它可以帮助用户将多个 PDF 文件进行异步处理&#xff0c;提高工作效率。 BatchOutput PDF 可以自动化执行许多任务&#xff0c;包括 PDF 文件的打印、转换、分割、压缩、加密、重命名等&#xff0c;而且它还可以将自定义…...

记一次oracle错误处理

16:00:05 SQL> alter database open; alter database open * 第 1 行出现错误: ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项 16:00:49 SQL> startup ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它 16:02:56 SQL> shutdown immediate O…...

hugging face下载dataset时候出现You must be authenticated to access it.问题解决

Cannot access gated repo for url https://huggingface.co/tiiuae/falcon-180B/resolve/main/tokenizer_config.json. Repo model tiiuae/falcon-180B is gated. You must be authenticated to access it. 参考https://huggingface.co/docs/huggingface_hub/guides/download …...

数据结构---树

树概念及结构 1.树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的 有一个特殊的结点&#xff0c…...

tomcat调优配置

一. 设置账户进入管理页面 通过浏览器进入Tomcat7的管理模块页面&#xff1a;http://localhost:8080/manager/status 按照提示&#xff0c;在Tomcat7服务器指定的位置修改配置文件&#xff08;conf/tomcat-users.xml&#xff09;&#xff0c;增加相应的用户和角色配置标签 <…...

基于深度学习的点云三维目标检测方法综述

论文标题&#xff1a;基于深度学习的点云三维目标检测方法综述 作者&#xff1a;郭毅锋&#xff11;&#xff0c;&#xff12;†&#xff0c;吴帝浩&#xff11;&#xff0c;魏青民&#xff11; 发表日期&#xff1a; 2023 1 阅读日期 &#xff1a;2023 11 29 研究背景&…...

Linux命令中的符号

目录 1 管道符 | 1.1 | grep [要检索的东西] 1.2 echo | tee 2 重定向 2.1 输出重定向覆盖 > 2.2 输出重定向添加 >> 2.3 文件输入重定向 < 2.4 多行文本输入重定向 << 2.5 常用搭配 2.5.1 终端不显示 > /dev/null 1 管道符 | 我们…...

BTCPay Server:免费、安全、开源的比特币支付处理器 | 开源日报 No.90

MunGell/awesome-for-beginners Stars: 58.0k License: NOASSERTION 这个项目是一个收集开源项目的列表&#xff0c;旨在帮助初学者找到可以贡献代码的机会。该列表按编程语言分类&#xff0c;并列出了每个项目以及其标签 (如 “good-first-issue”、“beginner” 等)。主要功…...

【数据挖掘】国科大刘莹老师数据挖掘课程作业 —— 第三次作业

Written Part 1. 基于表 1 1 1 回答下列问题&#xff08;min_sup40%, min_conf75%&#xff09;&#xff1a; Transaction IDItems Bought0001{a, d, e}0024{a, b, c, e}0012{a, b, d, e}0031{a, c, d, e}0015{b, c, e}0022{b, d, e}0029{c, d}0040{a, b, c}0033{a, d, e}0038…...

Windows挂载NFS

ubuntu开启nfs 安装 sudo apt install nfs-kernel-server编辑 /etc/exports /data/share *(rw,no_root_squash)重启服务 sudo systemctl restart nfs-server.service验证 showmount -e localhostwindows连接NFS 选择控制面板 > 程序 > 启用或关闭 Windows 功能 添加…...

数据结构第五课 -----二叉树的代码实现

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…...

优橙内推北京专场——5G网络优化(中高级)工程师

可加入就业QQ群&#xff1a;801549240 联系老师内推简历投递邮箱&#xff1a;hrictyc.com 内推公司1&#xff1a;西安长河通讯有限责任公司 内推公司2&#xff1a;北京电旗通讯技术股份有限公司 内推公司3&#xff1a;润建股份有限公司 西安长河通讯有限责任公司 西安长河…...

Mysql DDL语句建表及空字符串查询出0问题

DDL语句建表 语法&#xff1a; create table 指定要建立库的库名.新建表名 &#xff08;... 新建表的字段以及类型等 ...&#xff09;comment 表的作用注释 charset 表编译格式 row_format DYNAMIC create table dev_dxtiot.sys_url_permission (id integer …...

深入ArkTS:应用状态管理与LocalStorage装饰器详解【鸿蒙专栏-11】

文章目录 ArkTS 应用状态管理详解LocalStorage: 页面级 UI 状态存储使用规则概述:装饰器详解:限制条件:使用场景:1. 应用逻辑使用 LocalStorage2. 从 UI 内部使用 LocalStorageArkTS 应用状态管理进阶LocalStorage 装饰器详解1. @LocalStorageProp2. @LocalStorageLink观察…...

管理Android12系统的WLAN热点

大家好!我是编码小哥,欢迎关注,持续分享更多实用的编程经验和开发技巧,共同进步。 要创建一个APK管理Android 12系统的WLAN热点,你需要遵循以下步骤: 1. 获取必要的权限和API访问权限。在AndroidManifest.xml文件中添加以下权限: ```xml <uses-permission android:…...

从0开始学习JavaScript--JavaScript 中 `let` 和 `const` 的区别及最佳实践

在JavaScript中&#xff0c;let 和 const 是两个用于声明变量的关键字。尽管它们看起来很相似&#xff0c;但它们之间有一些重要的区别。本篇博客将深入探讨 let 和 const 的用法、区别&#xff0c;并提供一些最佳实践&#xff0c;以确保在代码中正确使用它们。 let 和 const …...

【上海大学数字逻辑实验报告】二、组合电路(一)

一、 实验目的 熟悉TTL异或门构成逻辑电路的基本方式&#xff1b;熟悉组合电路的分析方法&#xff0c;测试组合逻辑电路的功能&#xff1b;掌握构造半加器和全加器的逻辑测试&#xff1b;学习使用可编程逻辑器件的开发工具 Quartus II设计电路。 二、 实验原理 异或门是数字…...

MT5工具实战:快速生成文案变体,提升内容创作效率

MT5工具实战&#xff1a;快速生成文案变体&#xff0c;提升内容创作效率 1. 为什么你需要文案变体生成工具&#xff1f; 在日常内容创作中&#xff0c;我们经常面临一个共同挑战&#xff1a;如何用不同方式表达相同的意思。无论是营销文案、产品描述还是社交媒体内容&#xf…...

伊朗媒体:美军试图炸死在伊朗失联飞行员

新华社德黑兰4月5日电 伊朗塔斯尼姆通讯社5日凌晨报道称&#xff0c;美军搜救被击落战机的一名飞行员无果&#xff0c;试图通过空袭其在伊朗的可能藏身之处将其炸死。报道援引一名伊朗军方消息人士的话说&#xff0c;4日夜间至5日凌晨&#xff0c;美军出动战机&#xff0c;轰炸…...

查询直线的条数

#include <iostream> #include <vector> #include <set> #include <numeric> // For std::gcdusing namespace std;// 定义点结构 struct Point {int x, y; };// 定义直线结构&#xff0c;通过最简斜率和直线上的一点来唯一标识 // 实际上更好的办法是…...

CLIP-GmP-ViT-L-14入门指南:理解ImageNet/ObjectNet双基准评估意义

CLIP-GmP-ViT-L-14入门指南&#xff1a;理解ImageNet/ObjectNet双基准评估意义 1. 什么是CLIP-GmP-ViT-L-14 CLIP-GmP-ViT-L-14是一个经过几何参数化&#xff08;GmP&#xff09;微调的CLIP模型&#xff0c;在计算机视觉领域具有出色的表现。这个模型最大的特点是它在ImageNe…...

通义千问1.5-1.8B-Chat-GPTQ-Int4在网络安全领域的应用初探:威胁情报摘要

通义千问1.5-1.8B-Chat-GPTQ-Int4在网络安全领域的应用初探&#xff1a;威胁情报摘要 每天一上班&#xff0c;安全运营中心的分析师小李就要面对成百上千条新涌进来的安全告警、漏洞报告和威胁情报。这些文档动辄几十页&#xff0c;充斥着技术术语和复杂描述&#xff0c;光是快…...

Qwen3.5-2B模型Java环境快速配置与Hello World实例

Qwen3.5-2B模型Java环境快速配置与Hello World实例 1. 前言&#xff1a;为什么选择Java调用Qwen3.5-2B 如果你是一名Java开发者&#xff0c;想要快速体验大语言模型的魅力&#xff0c;这篇教程就是为你准备的。Qwen3.5-2B作为一款轻量级但性能出色的开源模型&#xff0c;非常…...

从VASP的POSCAR到精美插图:一条ASE可视化流水线搭建指南

从VASP的POSCAR到精美插图&#xff1a;一条ASE可视化流水线搭建指南 在计算材料学研究中&#xff0c;我们常常需要处理大量的结构文件&#xff0c;尤其是VASP计算产生的POSCAR文件。这些文件包含了材料的原子坐标和晶格信息&#xff0c;但直接阅读文本文件很难直观理解材料的几…...

基础入门-版本控制-GitLab/Gitea 基本使用

GitLab/Gitea 基本使用 在前面的章节中,我们学习了 Git 基础命令和团队协作流程。在实际工作中,这些操作都是围绕着代码托管平台展开的。GitLab 和 Gitea 是两种广泛使用的自托管 Git 仓库管理工具,它们提供了仓库管理、权限控制、代码审查、CI/CD 等功能,是运维团队进行配…...

跨平台文件同步:OpenClaw+百川2-13B-4bits量化模型智能归档方案

跨平台文件同步&#xff1a;OpenClaw百川2-13B-4bits量化模型智能归档方案 1. 为什么需要智能文件归档 作为一个长期在多台设备间切换工作的开发者&#xff0c;我的文件管理一直处于混乱状态。同一份文档可能同时存在于Mac的Downloads文件夹、Windows桌面的"临时"目…...

illa-helper开发者深度教程:如何扩展新的翻译服务提供商

illa-helper开发者深度教程&#xff1a;如何扩展新的翻译服务提供商 【免费下载链接】illa-helper 浸入式学语言助手 (Immersive Language Learning Assistant) 项目地址: https://gitcode.com/gh_mirrors/il/illa-helper 浸入式学语言助手是一个基于"i1"可理…...