列表

详情


2649. 嵌套数组生成器

现给定一个整数的 多维数组 ,请你返回一个生成器对象,按照 中序遍历 的顺序逐个生成整数。

多维数组 是一个递归数据结构,包含整数和其他 多维数组

中序遍历 是从左到右遍历每个数组,在遇到任何整数时生成它,遇到任何数组时递归应用 中序遍历

 

示例 1:

输入:arr = [[[6]],[1,3],[]]
输出:[6,1,3]
解释:
const generator = inorderTraversal(arr);
generator.next().value; // 6
generator.next().value; // 1
generator.next().value; // 3
generator.next().done; // true

示例 2:

输入:arr = []
输出:[]
解释:输入的多维数组没有任何参数,所以生成器不需要生成任何值。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
/** * @param {Array} arr * @return {Generator} */ var inorderTraversal = function*(arr) { }; /** * const gen = inorderTraversal([1, [2, 3]]); * gen.next().value; // 1 * gen.next().value; // 2 * gen.next().value; // 3 */

javascript 解法, 执行用时: 172 ms, 内存消耗: 67.3 MB, 提交时间: 2023-04-23 10:20:49

/**
 * @param {Array} arr
 * @return {Generator}
 */
var inorderTraversal = function*(arr) {
    for(let i = 0; i < arr.length; i++){
        let cur = arr[i];
        if(Array.isArray(cur)){
            yield* inorderTraversal(cur);
        }else {
            yield cur;
        }
    }
};

/**
 * const gen = inorderTraversal([1, [2, 3]]);
 * gen.next().value; // 1
 * gen.next().value; // 2
 * gen.next().value; // 3
 */

typescript 解法, 执行用时: 176 ms, 内存消耗: 68.2 MB, 提交时间: 2023-04-23 10:20:10

type MultidimensionalArray = (MultidimensionalArray | number)[]

function* inorderTraversal(arr: MultidimensionalArray): Generator<number, void, unknown> {
    // 注意这里不能直接扁平化数组,生成器的作用就是用到了再取值
    for(let i = 0; i < arr.length;i++){
        let cur = arr[i]
        if(Array.isArray(cur)){
            yield* inorderTraversal(cur)
        }else {
            yield cur
        }
    }
};

/**
 * const gen = inorderTraversal([1, [2, 3]]);
 * gen.next().value; // 1
 * gen.next().value; // 2
 * gen.next().value; // 3
 */

上一题