[Easy] LeetCode JS 30 - 2629. Function Composition (函式組合)

2024年3月3日

💎 加入 E+ 成長計畫 與超過 400+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

LeetCode 30 Days of JavaScript

本題來自 LeetCode 的 30 天 JacaScript 挑戰

2629. Function Composition (函式組合)

題目描述

給定一個函式陣列 [f1, f2, f3, ... fn],回傳一個新的函式 fn,它是該陣列中函式的組合。

函式組合的定義是,如果函式陣列為 [f(x), g(x), h(x)] ,則 fn(x) = f(g(h(x)))。空函式陣列的函式組合則為恆等函式 f(x) = x

你可以假設陣列中的每個函式都接受一個整數作為輸入,並回傳一個整數作為輸出。

// 範例一
輸入: functions = [x => x + 1, x => x * x, x => 2 * x], x = 4
輸出: 65
解說:
從右到左
初始的 x = 4.
2 * (4) = 8
(8) * (8) = 64
(64) + 1 = 65

// 範例二
輸入: functions = [x => 10 * x, x => 10 * x, x => 10 * x], x = 1
輸出: 1000
解說:
從右到左
10 * (1) = 10
10 * (10) = 100
10 * (100) = 1000

本題解答

以下是本題的解答,詳細解題思路可以在 E+ 成長計畫看到。如果想練習更多題目,推薦可以到 GreatFrontEnd 上練習

解法

var compose = function (functions) {
  return function (x) {
    let result = x;

    for (let i = functions.length - 1; i >= 0; i--) {
      result = functions[i](result);
    }

    return result;
  };
};
🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們