[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;
};
🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們