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

LeetCode题解:2625. 扁平化嵌套数组,递归

原题链接

https://leetcode.cn/problems/flatten-deeply-nested-array/

题目解析

题目要求我们将一个多维数组扁平化到指定的深度。具体来说,我们需要将数组中的子数组扁平化,直到达到给定的深度n。如果子数组的深度大于n,则不进行扁平化。

解题思路

我们可以使用递归的方法来解决这个问题。具体步骤如下:

  1. 遍历数组的每一个元素。
  2. 如果元素是一个数组,并且当前的深度小于n,则递归地扁平化这个子数组。
  3. 如果元素是一个数组,但当前的深度等于n,则直接将这个子数组添加到结果数组中。
  4. 如果元素不是一个数组,直接将它添加到结果数组中。

代码实现

/*** 扁平化多维数组到指定深度* @param {any[]} arr - 待扁平化的多维数组* @param {number} n - 扁平化的深度* @return {any[]} - 扁平化后的数组*/
var flat = function(arr, n) {let result = [];  // 存储扁平化后的结果/*** 递归函数,用于扁平化数组* @param {any[]} currentArr - 当前待处理的数组* @param {number} level - 当前数组的深度* @param {any[]} output - 存储扁平化结果的数组*/function recursion(currentArr, level, output) {for (const item of currentArr) {// 判断当前元素是否为数组if (Array.isArray(item)) {// 如果当前深度小于n,则继续扁平化if (level < n) {recursion(item, level + 1, output);} else {// 否则,直接将子数组添加到结果中output.push(item);}} else {// 如果元素不是数组,直接添加到结果中output.push(item);}}}// 调用递归函数开始扁平化recursion(arr, 0, result);return result;
};

总结

这种递归方法的时间复杂度是O(n),其中n是数组中的元素数量。空间复杂度取决于递归的深度,但在最坏的情况下,它是O(n)。这种方法是纯净的,没有副作用,并且可以有效地扁平化数组到指定的深度。

相关文章:

LeetCode题解:2625. 扁平化嵌套数组,递归

原题链接 https://leetcode.cn/problems/flatten-deeply-nested-array/ 题目解析 题目要求我们将一个多维数组扁平化到指定的深度。具体来说&#xff0c;我们需要将数组中的子数组扁平化&#xff0c;直到达到给定的深度n。如果子数组的深度大于n&#xff0c;则不进行扁平化。…...

基于深度学习的视觉检测小项目(五) 项目真正的开端

之前的所有都是项目概况和基础知识的铺垫&#xff0c;从今天开始真正进入项目。 首先明确一下项目的流程&#xff1a; • 任务分解分块&#xff0c;并作出每一块的大致功能规划 • 拆解工种&#xff0c;任务分派&#xff0c;约定工种间的接口方式和数据交互方式 • 按照任务块…...

使用ExecutorService和@Async来使用多线程

文章目录 使用ExecutorService和Async来使用多线程采用ExecutorService来使用多线程多线程过程的详细解释注意事项优点 使用Async来使用多线程对比Async和ExecutorService的多线程使用方式使用 ExecutorService 的服务类使用 Async 的服务类异步任务类自定义线程池主应用类解释…...

ArcGIS基础:使用【标识】工具完成分区统计线要素的长度

如上所示&#xff0c;有某个地区的部分管线数据&#xff0c;都是一些线要素。 如上所示&#xff0c;这片区域有好几个管理员&#xff0c;并有自己的管辖范围&#xff0c;现在需要根据这个范围&#xff0c;简单统计一下各自管理员&#xff08;张三、李四、王五&#xff09;范围内…...

专业高程转换工具 | 海拔高度与椭球高度在线转换系统

海拔高度转换工具&#xff1a;专业的高程转换系统 在线体验 立即使用 欢迎访问我的博客&#xff1a;https://cdtools.click&#xff0c;这里有更多实用的工具和技术分享。 工具背景 在测绘、工程、GIS 等领域&#xff0c;经常需要处理不同高程系统之间的转换。最常见的需求…...

springboot自定义注解的使用

目录 背景分析代码 背景 需求&#xff1a;对现有系统中所有数据库表都建立一张对应的备份表&#xff1b;在对主表进行增加&#xff0c;修改&#xff0c;删除操作的同时对备份表进行相同的操作。首先想到的应该是备份一个数据库就完事了~不过实际情况没这么简单&#xff0c;总之…...

Wallpaper壁纸制作学习记录13

骨骼物理模拟 Wallpaper Engine还允许您为人偶变形骨骼配置某些物理模拟。选择骨骼时&#xff0c;点击编辑约束来配置骨骼这些属性。 警告 请记住&#xff0c;物理模拟可能会根据用户的最大FPS设置略微改变其行为。 Wallpaper Engine编辑器将始终以高帧速率渲染。您可以将壁纸…...

Linux系统离线部署MySQL详细教程(带每步骤图文教程)

1、登录官网下载对应的安装包 MySQL :: Developer Zone 2、将压缩包上传到服务器上&#xff0c;这里直接上传到/usr/local路径上 使用sftp工具上传到/usr/local目录上 3、解压压缩包 tar -xf mysql-8.0.39-linux-glibc2.17-x86_64.tar.xz 4、将mysql-8.0.39-linux-glibc2.17…...

慧集通iPaaS集成平台低代码训练-实践篇

练习使用帐号信息&#xff1a; 1.致远A8平台&#xff08;请自行准备测试环境&#xff09; 慧集通连接器配置相关信息 访问地址&#xff1a; rest账号&#xff1a;rest rest密码&#xff1a; OA账号&#xff1a; 2.云星空&#xff08;请自行准备测试环境&#xff09; 连接…...

C程序设计:计算球的体积

问题&#xff1a;根据输入的半径值&#xff0c;计算球的体积。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪…...

AWS re:Invent 2024 - Dr. Werner Vogels 主题演讲

今年&#xff0c;我有幸亲临现场参加了所有的 keynote&#xff0c;每一场都让我感受到深深的震撼。无论是全新的功能发布&#xff0c;还是令人眼前一亮的新特性展示&#xff0c;每一场 keynote 都精彩纷呈&#xff0c;充满干货&#xff0c;值得反复学习和回味。 恰好&#xff…...

如何使用 `uiautomator2` 控制 Android 设备并模拟应用操作_VIVO手机

在 Android 自动化测试中,uiautomator2 是一个非常强大的工具,能够帮助我们通过 Python 控制 Android 设备执行各种操作。今天,我将通过一个简单的示例,介绍如何使用 uiautomator2 控制 Android 设备,执行特定的应用启动、广告跳过以及其他 UI 操作。此示例的目标是自动化…...

分析服务器 systemctl 启动gozero项目报错的解决方案

### 分析 systemctl start beisen.service 报错 在 Linux 系统中&#xff0c;systemctl 是管理系统和服务的主要工具。当我们尝试重启某个服务时&#xff0c;如果服务启动失败&#xff0c;systemctl 会输出错误信息&#xff0c;帮助我们诊断和解决问题。 本文将通过一个实际的…...

UE蓝图战利品掉落动画

战利品掉落动画&#xff0c;其实就是添加个冲量 add impulse 什么是冲量&#xff1f; 冲量 &#xff08;impulse&#xff09;是作用在物体上的力 在 时间上的累积效果...

Singleton: WebRTC中ThreadManager中的单例模式

1. 什么是单例模式&#xff1a; 旨在确保一个类只有一个实例&#xff0c;并提供全局访问点。 应用场景&#xff1a;需要一个全局唯一的实例&#xff0c;避免资源浪费。 2. 单例模式的实现&#xff1a; Lazy Initialization&#xff08;懒汉式&#xff09;&#xff08;延迟初…...

node.js之---CommonJS 模块

CommonJS概念 在 Node.js 中&#xff0c;CommonJS 是一种模块化规范&#xff0c;它定义了如何在 JavaScript 中创建和使用模块。CommonJS 是 Node.js 使用的默认模块系统。它让开发者能够分离代码&#xff0c;便于重用和维护。 CommonJS 模块的基本特性 模块导出 在 CommonJ…...

LabVIEW 使用 Resample Waveforms VI 实现降采样

在数据采集与信号处理过程中&#xff0c;降采样是一种重要的技术&#xff0c;用于在减少数据点的同时保留信号的关键特性&#xff0c;从而降低存储和计算需求。本文通过 LabVIEW 的 Resample Waveforms (continuous).vi 示例&#xff0c;详细介绍如何使用该功能实现波形数据的降…...

ArrayList 和LinkedList的区别比较

前言 ‌ArrayList和LinkedList的主要区别在于它们的底层数据结构、性能特点以及适用场景。‌ArrayList和LinkedList从名字分析&#xff0c;他们一个是Array&#xff08;动态数组&#xff09;的数据结构&#xff0c;一个是Linked&#xff08;链表&#xff09;的数据结构&#x…...

Linux进程控制

进程控制 进程创建系统调用fork()fork()的认识 进程终止进程等待wait/waitpid方法使用 wait/waitpid() 回收子进程 进程程序替换程序替换原理exec*进程替换函数 进程创建 系统调用fork() fork()&#xff1a;一个&#xff1a;Linux系统中的系统调用&#xff0c;用于创建子进程…...

分库分表之后,id 主键如何处理?

面试题 分库分表之后&#xff0c;id 主键如何处理&#xff1f; 面试官心理分析 其实这是分库分表之后你必然要面对的一个问题&#xff0c;就是 id 咋生成&#xff1f;因为要是分成多个表之后&#xff0c;每个表都是从 1 开始累加&#xff0c;那肯定不对啊&#xff0c;需要一…...

矩阵简单问题(Java)

问题&#xff1a; 顺时针打印二维方阵&#xff1a; 1 2 3 4 15 5 6 7 8 14 9 10 11 12 13 13 14 15 16 public class Test1 {public static void main(String[] args) {int[][] arr new int[][]{{1, 2, 3, 4,100},{5, 6, 7, 8,101},{9, 10, 11, 12,102},{13, 14, 15, 16,…...

从0到1:构建全新一代分布式数据架构

从0到1&#xff1a;构建全新一代分布式数据架构 一、分布式数据架构概述 1.1 分布式数据架构的定义 分布式数据架构是指将数据分散存储在多个物理或逻辑位置的计算节点上&#xff0c;并通过计算机网络进行协同工作的系统。这种架构能够提供高可用性、可扩展性和容错性&#…...

OpenGL ES 04 图片数据是怎么写入到对应纹理单元的

从指定路径加载图像并转换为 CGImage。获取图像的宽度和高度。创建一个 RGB 颜色空间。为图像数据分配内存。创建一个位图上下文并将图像绘制到上下文中。创建一个新的纹理对象并绑定到指定的纹理单元。指定二维纹理图像。释放分配的内存。设置纹理参数&#xff0c;包括放大和缩…...

uniapp小程序使用rich-text富文本图片溢出问题

参考https://blog.csdn.net/chenny_/article/details/115534622, 看了很多文章&#xff0c;就这个好使&#xff0c;所以记录一下 在common下新建relpaceImg.js // 正则变量 var graceRichTextReg;// 批量替换的样式 [ 根据项目需求自行设置 ] var GRT [// div 样式[div, &qu…...

详解GPT-信息抽取任务 (GPT-3 FAMILY LARGE LANGUAGE MODELS)

GPT-3 FAMILY LARGE LANGUAGE MODELS Information Extraction 自然语言处理信息提取任务&#xff08;NLP-IE&#xff09;&#xff1a;从非结构化文本数据中提取结构化数据&#xff0c;例如提取实体、关系和事件 [164]。将非结构化文本数据转换为结构化数据可以实现高效的数据处…...

网络基础入门到深入(3):网络协议-HTTP/S

目录 一、HTTP和HTTPS协议简介 1.HTTP协议 .HTTP 协议 作用&#xff1a; 特点&#xff1a; 2.HTTPS协议 作用&#xff1a; 实现方式&#xff1a; 特点&#xff1a; 二.HTTP的请求与响应结构 1.HTTP请求结构 1.请求行:描述操作和资源 2.请求头: 3.请求体 : 2.HTTP…...

Dokcer部署双主Mysql

创建容器&#xff1a; Mysql主1 docker run -d \ --name mysql-master1 \ -e MYSQL_ROOT_PASSWORD123456 \ -v /etc/mysql:/var/lib/mysql \ -p 3306:3306 \mysql:8.01 \ --server-id1 \ --log-binmysql-bin \ --gtid-modeON \ --enforce-gtid-consistencyONMysql主2 docker…...

axios拦截器底层实现原理

Axios 的拦截器通过内部的Promise 链实现了对请求和响应的拦截与修改。了解其底层原理需要深入到 Axios 源码中&#xff0c;特别是其请求发起和响应处理的逻辑。 Axios 拦截器实现流程 拦截器队列 Axios 在内部维护了两个拦截器队列&#xff1a;request 和 response。当开发者…...

《类和对象:基础原理全解析(下篇)》

目录 一、类的构造函数的初始化列表1. 初始化列表的使用2. 初始化列表的初始化顺序3. 使用初始化列表的注意事项 二、类的自动类型转换1. 类的自动类型转换的使用2. 关闭类的自动类型转换 三、静态类成员1. 静态成员的特性2. 使用静态成员计算类创建了多少个对象3. 使用静态类成…...

==和===的区别,被坑的一天

在 JavaScript 中&#xff0c; 和 都用于比较两个值&#xff0c;但它们有一个重要的区别&#xff1a; 1. (宽松相等运算符) 进行比较时&#xff0c;会 自动类型转换&#xff08;也叫做强制类型转换&#xff09;&#xff0c;即如果比较的两个值的类型不同&#xff0c;JavaScr…...

Azure Airflow 中配置错误可能会使整个集群受到攻击

网络安全研究人员在 Microsoft 的 Azure 数据工厂 Apache Airflow 中发现了三个安全漏洞&#xff0c;如果成功利用这些漏洞&#xff0c;攻击者可能会获得执行各种隐蔽操作的能力&#xff0c;包括数据泄露和恶意软件部署。 “利用这些漏洞可能允许攻击者以影子管理员的身份获得…...

【数据结构】链表(2):双向链表和双向循环链表

双向链表&#xff08;Doubly Linked List&#xff09; 定义&#xff1a; 每个节点包含三个部分&#xff1a; 数据域。前驱指针域&#xff08;指向前一个节点&#xff09;。后继指针域&#xff08;指向下一个节点&#xff09;。 支持从任意节点向前或向后遍历。 #define dat…...

鸿蒙开发:了解正则表达式

前言 从给出的文本中&#xff0c;按照既定的相关规则&#xff0c;匹配出符合的数据&#xff0c;其中的规则就是正则表达式&#xff0c;使用正则表达式&#xff0c;可以使得我们用简洁的代码就能实现一定复杂的逻辑&#xff0c;比如判断一个邮箱账号是否符合正常的邮箱账号&…...

【juc】AQS是什么

目录 1. 说明2. 资源共享方式3. 核心思想与实现4. 自定义同步器5. 常用实现类 1. 说明 1.AQS是AbstractQueuedSynchronizer的简称&#xff0c;即抽象的队列式同步器&#xff0c;也可以称作队列同步器。2.它是Java并发包&#xff08;java.util.concurrent&#xff09;中的一个重…...

最好用的图文识别OCR -- PaddleOCR(1) 快速集成

最近在项目中遇到了 OCR 的需求&#xff0c;希望能够实现高效而准确的文字识别。由于预算限制&#xff0c;我并未选择商业付费方案&#xff0c;而是优先尝试了开源工具。一开始&#xff0c;我测试了 GOT-OCR2.0&#xff0c;但由于我的 Mac 配置较低&#xff0c;不支持 GPU 运算…...

【最新】17个一站式数据集成平台案例PPT下载(Apache SeaTunnel )

17个Apache SeaTunnel案例下载见附件&#xff01; 开发篇 1.Apache SeaTunnel——OLAP 引擎的数据动脉 1.1项目定位——EtLT 时代的新一代数据集成平台 1.2Apache SeaTunnel 核心功能 1.3Apache SeaTunnel 在 OLAP 场景下的应用 1.4WhaleTunnel 产品特性 2.教你从头到尾开发一…...

第2章波动光学引论—抓本质,本质必定简单

1波动光学的电磁理论 1.1波动方程 1&#xff09;波动方程是通过描述波函数随时间和空间的变化来表达波动的传播和演化。 2&#xff09;一维波动方程&#xff1a; a.一维波动方程描述了沿着一条直线传播的波动。它的一般形式为&#xff1a; ∂u/∂t v ∂u/∂x 其中&#xff…...

基于通义千问2-VL-7B-Instruct模型的微调技术指南

基于通义千问2-VL-7B-Instruct模型的微调技术指南 引言 通义千问2-VL-7B-Instruct 是一个强大的多模态大语言模型,支持文本和图像的联合理解与生成。为了使其在特定任务或领域上表现更优,微调(Fine-tuning)是一个关键步骤。本文将详细介绍如何对通义千问2-VL-7B-Instruct…...

IDEA XML 文件 SQL 提示

首先连接到对应的数据库。Database 里面要填写对应的数据库名称 配置当前项目的 SQL 方言&#xff0c;例如我这里是 MySQL 数据库管理系统&#xff0c;那么就选择 MySQL 此时就有 SQL 语法、表名、字段名等提示信息了...

Node.js 模块系统

Node.js 模块系统 1. 引言 Node.js,作为一个轻量级、高效的服务器端 JavaScript 运行环境,其模块系统是其最核心的特性之一。Node.js 的模块系统允许开发者将代码组织成多个文件,每个文件都是一个模块,这样可以提高代码的可维护性和可重用性。本文将详细介绍 Node.js 的模…...

面试题:@Transactional 注解在自调用情况下会失效原因

Transactional 注解在自调用情况下会失效&#xff0c;这主要是由于 Spring 事务管理的实现机制所导致的。以下是对这一问题的详细解释&#xff1a; 一、Spring 事务管理的实现机制 Spring 的事务管理是基于 AOP&#xff08;面向切面编程&#xff09;实现的&#xff0c;它通过…...

KMP 2024 年总结,Kotlin 崛起的一年

2024 Google I/O 上正式官宣了 KMP&#xff08;Kotlin Multiplatform&#xff09;项目&#xff0c;它是 Google Workspace 团队的一项长期「投资」项目&#xff0c;由 JetBrains 开发维护和开源的项目&#xff0c;简单来说&#xff0c;JetBrains 主导&#xff0c;Google Worksp…...

super_vlan

Super VLAN产生的背景 就经典的酒店例子来说&#xff0c;若是将101房和102房的网络划分在同一个vlan下面&#xff0c;那么101房出现了一个懂得某些安全技术的大佬&#xff0c;就会使得102房的隐私得到严重的隐患 所以这时我们就需要将二层给隔离开&#xff0c;但又要去保证10…...

Harbor仓库部署安装、向仓库推送,拉取镜像、容器的基础使用(超级详细,非常透彻)

Harbor 环境搭建笔记 作为新手&#xff0c;在搭建 Harbor 环境的过程中&#xff0c;我参考了大量资料&#xff0c;学到了很多宝贵的知识&#xff0c;但也遇到了不少挑战。虽然目前这套环境仅在测试环境中成功运行&#xff0c;但仍有许多细节需要完善。记录这些经验不仅有助于个…...

【论文+源码】一个基于SSM(Spring + Spring MVC + MyBatis)的公寓电能计量系统

为了实现一个基于SSM&#xff08;Spring Spring MVC MyBatis&#xff09;的公寓电能计量系统&#xff0c;我们需要创建一个简单的Web应用程序来记录和显示每个公寓的电能使用情况。以下是一个基本的实现示例。 我们将包括以下几个部分&#xff1a; 数据库表设计实体类DAO层…...

开源架构的容器化部署优化版

上三篇文章推荐&#xff1a; 开源架构的微服务架构实践优化版&#xff08;New&#xff09; 开源架构中的数据库选择优化版&#xff08;New&#xff09; 开源架构学习指南&#xff1a;文档与资源的智慧锦囊&#xff08;New&#xff09; 我管理的社区推荐&#xff1a;【青云交社区…...

linux安装redis及Python操作redis

目录 一、Redis安装 1、下载安装包 2、解压文件 3、迁移文件夹 4、编译 5、管理redis文件 6、修改配置文件 7、启动Redis 8、将redis服务交给systemd管理 二、Redis介绍 1、数据结构 ①字符串String ②列表List ③哈希Hash ④集合Set ⑤有序集合Sorted Set 2、…...

万里数据库GreatSQL监控解析

GreatSQL是MySQL的一个分支&#xff0c;专注于提升MGR&#xff08;MySQL Group Replication&#xff09;的可靠性及性能。乐维监控平台可以有效地监控GreatSQL&#xff0c;帮助用户及时发现并解决潜在的性能问题。 通过在GreatSQL服务器上安装监控代理&#xff0c;收集数据库性…...

商米电子秤服务插件

概述 SunmiScaleUTS封装商米电子秤服务模块&#xff0c;支持商米旗下S2, S2CC, S2L CC等设备&#xff0c;设备应用于超市、菜市场、水果店等,用于测量商品的重量,帮助实现快捷、准确、公正的交易等一系列商业场景。 功能说明 SDK插件下载 一. 电子秤参数 型号:S2, S2CC, …...

Java-写一个计数器

一个简单的线程安全的计数器实现。我们将使用AtomicInteger来确保计数操作是线程安全的,并 且提供基本的增减和获取计数值的功能。 简单线程安全计数器 import java.util.concurrent.atomic.AtomicInteger;public class Counter {private final AtomicInteger count = new …...