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

说在前面

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

题目描述

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

返回数组的创建语句应为 returnedArrayi = fn(arri, 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 <= arri <= 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代码

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

相关推荐
李小白662 小时前
第四天-WEB服务器基本原理,IIS服务
运维·服务器·前端
humcomm2 小时前
AI编程时代新前端职位
前端·ai编程
好家伙VCC2 小时前
Web Components主题热切换方案揭秘
java·前端
想吃火锅10052 小时前
【leetcode】14.最长公共前缀js
算法·leetcode·职场和发展
甲维斯3 小时前
Kimi版超级玛丽效果“惊人”,配额不足5厘米!
前端·人工智能
hboot3 小时前
AI工程师第一课 - Python
前端·后端·python
凉菜凉凉3 小时前
AI时代,被抛弃的前端
前端·ai
console.log('npc')3 小时前
AI前端工程与生成式UI学习路线
前端·人工智能·ui
huangdong_3 小时前
淘宝商品SKU图自动分类技术深度解析:从DOM解析到智能归档
开发语言·javascript·ecmascript
梦曦i4 小时前
uni-router v1.1.1发布:守卫超时保护+路由监听
前端·uni-app