蘑菇街网站怎么做,狠狠做网站改成什么了,画册设计公司排行榜,做关于什么的网站说在前面 #x1f388;不知道大家对于算法的学习是一个怎样的心态呢#xff1f;为了面试还是因为兴趣#xff1f;不管是出于什么原因#xff0c;算法学习需要持续保持。 题目描述
现给定一个整数的 多维数组 #xff0c;请你返回一个生成器对象#xff0c;按照 中序遍历…说在前面 不知道大家对于算法的学习是一个怎样的心态呢为了面试还是因为兴趣不管是出于什么原因算法学习需要持续保持。 题目描述
现给定一个整数的 多维数组 请你返回一个生成器对象按照 中序遍历 的顺序逐个生成整数。
多维数组 是一个递归数据结构包含整数和其他 多维数组。
中序遍历 是从左到右遍历每个数组在遇到任何整数时生成它遇到任何数组时递归应用 中序遍历 。
示例 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 10^50 arr.flat()[i] 10^5maxNestingDepth 10^5
解题思路
先使用 Array.prototype.flat() 方法将嵌套的数组扁平化成一维数组。然后使用 for…of 循环遍历扁平化后的数组中的每个元素并通过 yield 关键字将其返回给生成器。
由于函数返回的是一个生成器对象而不是一个普通的数组因此在需要使用生成器的场合可以使用 inorderTraversal 函数来生成一个迭代器通过调用 next() 方法逐个获取生成器返回的值。
需要注意的是由于该函数没有对原始数组进行任何修改因此即使输入的数组是多重嵌套的最终返回的序列也将是一维的即所有值都是相邻的没有层级关系。如果需要按照树形结构遍历多维数组需要使用递归算法或其他层级遍历算法。
AC代码
/*** param {Array} arr* return {Generator}*/
var inorderTraversal function*(arr) {arr arr.flat();for(const item of arr){yield item;}
};公众号
关注公众号『前端也能这么有趣』获取更多有趣内容。
说在后面 这里是 JYeontu现在是一名前端工程师有空会刷刷算法题平时喜欢打羽毛球 平时也喜欢写些东西既为自己记录 也希望可以对大家有那么一丢丢的帮助写的不好望多多谅解 写错的地方望指出定会认真改进 偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章有兴趣的也可以关注下。在此谢谢大家的支持我们下文再见 。