[Medium] LeetCode JS 30 - 2625. Flatten Deeply Nested Array (陣列扁平化)
2024年3月7日
💎 加入 E+ 成長計畫 與超過 400+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源
LeetCode 30 Days of JavaScript
本題來自 LeetCode 的 30 天 JacaScript 挑戰
2625. Flatten Deeply Nested Array (陣列扁平化)題目描述
給定一個多維陣列 arr
和一個深度值 n
,返回這個陣列的扁平化版本。多維陣列是一種可以包含整數或者其他多維陣列的遞歸式數據結構。
扁平化陣列指的是將原來陣列中的部分或全部子陣列移除,並用子陣列中的實際元素替代的結果。這種扁平化操作只會在當前嵌套深度小於 n
時執行。第一層陣列中元素的深度被視為 0。
// 範例
輸入:
arr = [1, 2, 3, [4, 5, 6], [7, 8, [9, 10, 11], 12], [13, 14, 15]]
n = 0
輸出:
[1, 2, 3, [4, 5, 6], [7, 8, [9, 10, 11], 12], [13, 14, 15]]
解釋:
當傳入的深度值 n=0 時,會總是得到原始的陣列作為輸出結果。這是因為子陣列(0)的最小可能深度不小於 n=0。因此,不會有任何子陣列被扁平化。
本題解答
以下是本題的解答,詳細解題思路可以在 E+ 成長計畫看到。如果想練習更多題目,推薦可以到 GreatFrontEnd 上練習
解法
var flat = function (arr, n) {
const result = [];
for (let item of arr) {
if (Array.isArray(item) && n > 0) {
result.push(...flat(item, n - 1));
} else {
result.push(item);
}
}
return result;
};