2635. 转换数组中的每个元素

简介: 2635. 转换数组中的每个元素

说在前面

🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。

题目描述

编写一个函数,这个函数接收一个整数数组 arr 和一个映射函数 fn ,通过该映射函数返回一个新的数组。

返回数组的创建语句应为 returnedArray[i] = fn(arr[i], i) 。

请你在不使用内置方法 Array.map 的前提下解决这个问题。

示例 1:

输入:arr = [1,2,3], fn = function plusone(n) { return n + 1; }
输出:[2,3,4]
解释: 
const newArray = map(arr, plusone); // [2,3,4]
此映射函数返回值是将数组中每个元素的值加 1。

示例 2:

输入:arr = [1,2,3], fn = function plusI(n, i) { return n + i; }
输出:[1,3,5]
解释:此映射函数返回值根据输入数组索引增加每个值。

示例 3:

输入:arr = [10,20,30], fn = function constant() { return 42; }
输出:[42,42,42]
解释:此映射函数返回值恒为 42。

提示:

  • 0 <= arr.length <= 1000
  • -109 <= arr[i] <= 109
    fn 返回一个数

解题思路

实现了一个map函数,它接受一个数组和一个函数作为参数,返回一个新的数组,新数组中的元素是原数组中每个元素经过函数处理后的结果。

具体的实现步骤如下:

  • 定义一个名为map的函数,它接受两个参数:一个数组arr和一个函数fn。
  • 创建一个长度与输入数组相同的结果数组res。
  • 使用for循环遍历输入数组中的每个元素,同时将元素的值和下标作为参数传递给函数fn,并将函数的执行结果赋值给结果数组res的相应位置。
  • 循环结束后,返回结果数组res。

例如,调用map([1, 2, 3], x => 2 * x),它会将输入数组[1, 2, 3]中的每个元素都乘以2,得到一个新的数组[2, 4, 6]作为结果。

这段代码的时间复杂度为O(n),其中n为输入数组的长度。

AC代码

/**
 * @param {number[]} arr
 * @param {Function} fn
 * @return {number[]}
 */
var map = function(arr, fn) {
    const res = new Array(arr.length);
    for(let i = 0; i < arr.length; i++){
        res[i] = fn(arr[i],i);
    }
    return res;
};

公众号

关注公众号『前端也能这么有趣』,获取更多有趣内容。

说在后面

🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。

目录
相关文章
|
3月前
元素的转换
元素的转换。
36 0
数组与集合的转换
数组与集合的转换
61 0
|
7月前
用几种方法输出二维数组各元素的值。
用几种方法输出二维数组各元素的值。
104 4
|
C++
数组中的第 K 个最大元素(C++实现)
数组中的第 K 个最大元素(C++实现)
102 1
|
前端开发
数组常用的几个方法
数组常用的几个方法
49 0
数组的相关方法
数组的相关方法
65 0
如何向数组里添加元素
如何向数组里添加元素
132 0
类数组如何转换为数组
类数组如何转换为数组
85 0
把一个数组的元素全部显示在另外一个数组里面;未赋初始值
把一个数组的元素全部显示在另外一个数组里面;未赋初始值
90 0
把一个数组的元素全部显示在另外一个数组里面;未赋初始值

热门文章

最新文章