嵌套数组生成器js/ts专属题(详解)"/>
leetCode2649. 嵌套数组生成器js/ts专属题(详解)
题目描述:
现给定一个整数的 多维数组 ,请你返回一个生成器对象,按照 中序遍历 的顺序逐个生成整数。
多维数组 是一个递归数据结构,包含整数和其他 多维数组。
中序遍历 是从左到右遍历每个数组,在遇到任何整数时生成它,遇到任何数组时递归应用 中序遍历 。
题目分析:
根据题目描述,我们需要中序遍历传入的参数arr数组,arr是一个嵌套的多维数组,在遍历到数组时需要再进行递归的遍历,只在遇到整数的时候生成它。一个很简单的思路就是先将这个多维数组arr打平,变成包含所有非数组类型元素的一维数组,然后再进行遍历yield每个元素。
源代码:
/*** @param {Array} arr* @return {Generator}*/
function *inorderTraversal(array) {const arrayFlatten = (arr, ans = new Array()) => {for(const item of arr) {if(Array.isArray(item)) {arrayFlatten(item, ans);} else {ans.push(item);}}return ans;}for(const item of arrayFlatten(array)) {yield item;}
};/*** const gen = inorderTraversal([1, [2, 3]]);* gen.next().value; // 1* gen.next().value; // 2* gen.next().value; // 3*/
更多推荐
leetCode2649. 嵌套数组生成器js/ts专属题(详解)
发布评论