js手写题:第二章

文章目录

前言

hello world欢迎来到前端的新世界


😜当前文章系列专栏:前端面试

🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误,感谢大家指出)🌹

💖感谢大家支持!您的观看就是作者创作的动力

题目要求

用js实现给定一个整数数组nums和一个证书目标值target,请你在该数组中找出和为目标值,target的那两个整数,并返回它们的数组下标,你可以假设没中输入只会对应一个答案,但是数组中见的一个元素在答案里不能重复出现,你可以按照任意顺序返回答案,用js实现,

加分项 :要求算法复杂度小于O(n2)

代码

可以使用哈希表来优化算法,在遍历原数组的同时,将元素存入哈希表中,同时判断哈希表中是否已经存在某个元素与当前元素能够组合成target,如果有,则直接返回结果即可。

javascript 复制代码
function twoSum(nums, target) {
  const map = new Map(); // 声明哈希表

  for (let i = 0; i < nums.length; i++) {
    const complement = target - nums[i];
    if (map.has(complement)) {
      return [map.get(complement), i];
    }
    map.set(nums[i], i); // 将元素存入哈希表中
  }
}

在空间使用上,我们可以优化掉哈希表和数组的使用,而是用单次循环来查找差值的时候同时将元素和索引记录在同一个 Map 中,就可以达到只遍历一次数组的时间复杂度,同时又不需要额外的空间开销。

javascript 复制代码
function twoSum(nums, target) {
  const map = new Map();

  for (let i = 0; i < nums.length; i++) {
    const complement = target - nums[i];
    if (map.has(complement)) {
      return [map.get(complement), i];
    }
    map.set(nums[i], i);
  }
}

后言

创作不易,要是本文章对广大读者有那么一点点帮助 不妨三连支持一下,您的鼓励就是博主创作的动力

相关推荐
浅水壁虎17 分钟前
vue基础(第二章 )
前端·javascript·vue.js
界面开发小八哥18 分钟前
界面控件DevExtreme v26.1新版亮点——支持Angular 22
前端·javascript·angular.js·devexpress·ui开发·devextreme
moonsims24 分钟前
星闪在跨域无人化系统作用
开发语言·php
Iruoyaoxh1 小时前
栈和队列~
java·开发语言
Hrain-AI1 小时前
2026 企业 AI 编程智能体实战:Codex 与 Claude Code
开发语言·人工智能·kotlin
mONESY1 小时前
React useState 核心原理与最佳实践:从异步更新到性能优化全解
javascript
腻害兔2 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:CRM 客户关系模块深度解析——从线索到回款,一套完整的 B2B 销售闭环是怎么搭的?
java·前端·javascript·vue.js·产品经理·ai编程
wdfk_prog2 小时前
嵌入式面试真题第 13 题:单硬件 Timer 下的高精度多路软件定时器架构设计
c语言·开发语言·面试·职场和发展·嵌入式
oort1232 小时前
吃上了自家的细糠,还挺丝滑,用起来手感还行,OortCloud发布新版AI编程平台,下载 OortCodex,Token多,免费薅
大数据·开发语言·人工智能·ai编程
slandarer2 小时前
MATLAB | 泰勒图绘制,支持各种角度范围
开发语言·数学建模·matlab·nature·顶刊·泰勒图