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

2024年3月3日

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

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 上追蹤我們