原创
数组归约运算
函数实现:数组归约
问题描述
编写一个函数,接收以下三个参数:
- 整数数组
nums - 计算函数
fn,该函数接受两个整数参数并返回一个整数 - 初始值
init
函数的目标是通过迭代地应用计算函数 fn 来对数组 nums 进行归约,并返回归约后的结果。若数组为空,则返回初始值 init。
示例
示例 1
markdown
12345
输入:
nums = [1,2,3,4]
fn = function sum(accum, curr) { return accum + curr; }
init = 0
输出:10
示例 2
markdown
12345
输入:
nums = [1,2,3,4]
fn = function sum(accum, curr) { return accum + curr * curr; }
init = 100
输出:130
示例3
markdown
12345
输入:
nums = []
fn = function sum(accum, curr) { return 0; }
init = 25
输出:25
约束条件
0 <= nums.length <= 10000 <= nums[i] <= 10000 <= init <= 1000
TypeScript 实现代码
TypeScript
1234567891011121314151617
// 定义计算函数类型
type Fn = (accum: number, curr: number) => number
// 数组归约函数实现
function reduce(nums: number[], fn: Fn, init: number): number {
let num = init;
if (!nums.length) return init;
// 遍历数组并应用计算函数
nums.forEach((item, i) => {
const listItem = fn(num, item);
num = listItem;
});
// 返回归约后的结果
return num;
};
期待你的捷足先登






