【LeetCode】2626. 数组归约运算
2024-01-08 15:45:29
题目
给定一个整数数组 nums
、一个 reducer
函数 fn
和一个初始值 init
,返回通过依次对数组的每个元素执行 fn
函数得到的最终结果。
通过以下操作实现这个结果:val = fn(init, nums[0])
,val = fn(val, nums[1])
,val = fn(val, nums[2])
,… 直到处理数组中的每个元素。然后返回 val
的最终值。
如果数组的长度为 0
,则函数应返回 init
。
请你在不使用内置数组方法的 Array.reduce 前提下解决这个问题。
示例 1:
输入:
nums = [1,2,3,4]
fn = function sum(accum, curr) { return accum + curr; }
init = 0
输出:10
解释:
初始值为 init=0 。
(0) + nums[0] = 1
(1) + nums[1] = 3
(3) + nums[2] = 6
(6) + nums[3] = 10
Val 最终值为 10。
示例 2:
输入:
nums = [1,2,3,4]
fn = function sum(accum, curr) { return accum + curr * curr; }
init = 100
输出:130
解释:
初始值为 init=100 。
(100) + nums[0]^2 = 101
(101) + nums[1]^2 = 105
(105) + nums[2]^2 = 114
(114) + nums[3]^2 = 130
Val 最终值为 130。
示例3:
输入:
nums = []
fn = function sum(accum, curr) { return 0; }
init = 25
输出:25
解释:这是一个空数组,所以返回 init 。
提示:
0 <= nums.length <= 1000
0 <= nums[i] <= 1000
0 <= init <= 1000
题解
普通判断循环, 很简单的题目,一看就会,看不明白建议重开
/**
* @param {number[]} nums
* @param {Function} fn
* @param {number} init
* @return {number}
*/
var reduce = function(nums, fn, init) {
if (!nums.length) return init;
var val = init;
for(let i = 0; i < nums.length; i++) {
val = fn(val, nums[i])
}
return val;
};
作者:符韬
链接:https://leetcode.cn/problems/array-reduce-transformation/solutions/2595870/pu-tong-pan-duan-xun-huan-by-fe1lgktmuj-hgui/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
文章来源:https://blog.csdn.net/Dongfang_project/article/details/135455820
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!