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

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)。这种方法是纯净的,没有副作用,并且可以有效地扁平化数组到指定的深度。


http://www.kler.cn/a/464706.html

相关文章:

  • Git 新手无忧:常用命令与错误解决攻略
  • 2025/1/4期末复习 密码学 按老师指点大纲复习
  • Flink源码编译与运行
  • 车载通信架构 --- 智能汽车通信前沿技术
  • 如何轻松关闭 iPhone 上的 HEIC [HEIC 图像技巧]
  • 『 Linux 』高级IO (三) - Epoll模型的封装与EpollEchoServer服务器
  • 解决chatgpt(mac app登陆)出现报错:获取您的 SSO 信息时出错
  • 如何利用动态IP采集数据?
  • 方正畅享全媒体新闻采编系统imageProxy存在任意文件读取漏洞
  • Java毕设项目:基于Springboot电影院在线选座订票系统设计与实现开题报告
  • 可扩展性设计架构模式——事件驱动架构
  • 前端页面有那三层?分别是什么?作用是 什么?
  • 计算机网络期末复习之网络层
  • 代码随想录算法【Day8】
  • CentOS7 解决ping:www.baidu.com 未知的名称或服务
  • el-table行列转换简单版,仅限单行数据
  • 在K8S中,如何部署kubesphere?
  • 【Ubuntu 系统 之 开启远程桌面SSH登录】
  • 课设CLion连接Ubuntu14makeQt项目出错解决汇总
  • 将simpletex 识别的公式 复制到ppt 中
  • java Redisson 实现限流每秒/分钟/小时限制N个
  • 启智云脑Ascend调试平台安装gcc
  • Ubuntu执行sudo apt-get update失败的解决方法
  • Hive如何创建自定义函数(UDF)?
  • 25年1月更新。Windows 上搭建 Python 开发环境:Python + PyCharm 安装全攻略(文中有安装包不用官网下载)
  • Transformer入门指南:从原理到实践