LeetCode 题解工作台
嵌套数组生成器
现给定一个整数的 多维数组 ,请你返回一个生成器对象,按照 中序遍历 的顺序逐个生成整数。 多维数组 是一个递归数据结构,包含整数和其他 多维数组 。 中序遍历 是从左到右遍历每个数组,在遇到任何整数时生成它,遇到任何数组时递归应用 中序遍历 。 示例 1: 输入: arr = [[[6]],[1,…
0
题型
1
代码语言
0
相关题
当前训练重点
中等 · nested·数组·generator·core·interview·pattern
答案摘要
type MultidimensionalArray = (MultidimensionalArray | number)[]; function* inorderTraversal(arr: MultidimensionalArray): Generator<number, void, unknown> {
Interview AiBoxInterview AiBox 实时 AI 助手,陪你讲清 nested·数组·generator·core·interview·pattern 题型思路
题目描述
现给定一个整数的 多维数组 ,请你返回一个生成器对象,按照 中序遍历 的顺序逐个生成整数。
多维数组 是一个递归数据结构,包含整数和其他 多维数组。
中序遍历 是从左到右遍历每个数组,在遇到任何整数时生成它,遇到任何数组时递归应用 中序遍历 。
示例 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 = [] 输出:[] 解释:输入的多维数组没有任何参数,所以生成器不需要生成任何值。
提示:
0 <= arr.flat().length <= 1050 <= arr.flat()[i] <= 105maxNestingDepth <= 105
解题思路
方法一
type MultidimensionalArray = (MultidimensionalArray | number)[];
function* inorderTraversal(arr: MultidimensionalArray): Generator<number, void, unknown> {
for (const e of arr) {
if (Array.isArray(e)) {
yield* inorderTraversal(e);
} else {
yield e;
}
}
}
/**
* const gen = inorderTraversal([1, [2, 3]]);
* gen.next().value; // 1
* gen.next().value; // 2
* gen.next().value; // 3
*/
复杂度分析
| 指标 | 值 |
|---|---|
| 时间 | Depends on the final approach |
| 空间 | Depends on the final approach |
面试官常问的追问
外企场景- question_mark
Understand recursion with generator functions.
- question_mark
Familiarity with 'yield*' syntax for delegating generator control.
- question_mark
Ability to optimize traversal of nested arrays.
常见陷阱
外企场景- error
Failing to correctly implement the recursion for nested arrays.
- error
Not using the 'yield*' syntax to properly delegate control between nested generators.
- error
Forgetting to handle edge cases like empty arrays.
进阶变体
外企场景- arrow_right_alt
Implement a version that flattens the array into a single list before traversing.
- arrow_right_alt
Optimize for large arrays with a higher nesting depth.
- arrow_right_alt
Test how the solution performs with arrays containing only integers versus arrays with mixed data types.