# 2649. Nested Array Generator ###### tags: `leetcode 30 days js challenge` `Medium` [2649. Nested Array Generator](https://leetcode.com/problems/nested-array-generator/) ### 題目描述 Given a **multi-dimensional** array of integers, return a generator object which yields integers in the same order as **inorder traversal**. A **multi-dimensional array** is a recursive data structure that contains both integers and other **multi-dimensional arrays**. **inorder traversal** iterates over each array from left to right, yielding any integers it encounters or applying **inorder traversal** to any arrays it encounters. ### 範例 **Example 1:** ``` Input: arr = [[[6]],[1,3],[]] Output: [6,1,3] Explanation: const generator = inorderTraversal(arr); generator.next().value; // 6 generator.next().value; // 1 generator.next().value; // 3 generator.next().done; // true ``` **Example 2:** ``` Input: arr = [] Output: [] Explanation: There are no integers so the generator doesn't yield anything. ``` **Constraints**: - 0 <= `arr.flat().length` <= 10<sup>5</sup> - 0 <= `arr.flat()[i]` <= 10<sup>5</sup> - `maxNestingDepth` <= 10<sup>5</sup> ### 解答 #### TypeScript ```typescript= type MultidimensionalArray = (MultidimensionalArray | number)[]; function* inorderTraversal(arr: MultidimensionalArray): Generator<number, void, unknown> { for (let i = 0; i < arr.length; i++) { if (typeof arr[i] === 'number') { yield arr[i] as number; } else { yield* inorderTraversal(arr[i] as MultidimensionalArray); } } } ``` > [name=Sheep][time=Sat, June 3, 2023] ### Reference [回到題目列表](https://hackmd.io/@Marsgoat/leetcode_every_day)