LeetCode 01——两数之和(使用JavaScript语言)|刷题打卡

简介: LeetCode 01——两数之和(使用JavaScript语言)|刷题打卡

前言

掘金团队号上线,助你 Offer 临门! 点击 查看详情

题目描述

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。

image.png

方法1:(暴力法)

思路:两重循环,第一重指向第i个的时候,第二重依次遍历i后边的所有,相加一起看是否等于target,若等于则返回。

image.png

伪代码

funtion twoSum(nums,target):
  for i ← 0 to (nums.length - 1):
    for j ← (i + 1) to (nums.length - 1):
      if target == nums[i] + nums[j]:
        return [i,j];

算法复杂度分析

  • 时间复杂度
  1. 时间复杂度:O(N^2) ,其中 N是数组中的元素数量。最坏情况下数组中任意两个数都要被匹配一次.
  2. 空间复杂度:O(1)。

执行结果

image.png

方法2:(借用哈希表)

  1. 首先使用哈希表将数组的下标和值进行一一对应。
  2. 遍历数组中的每一个元素,使用目标值target减去被遍历的元素并将结果赋值给anotherNum变量。
  3. 如果哈希表中存在anotherNum这个键,并且这个变量对应的值即下标,与正在被遍历的元素的下标不同,则将被遍历元素的下标和anotherNum元素的下标进行返回。

image.png

伪代码

function twoSum(nums,target):
  result = [];  //存储返回结果的数组
  map = new Map();   //此处实例化一个HashMap对象
  for j ← 0 to (nums.length - 1):
    map.set(nums[j],j);    //将数组中的所有元素的值和下标存储到名为map的HashMap中
  for i ← 0 to (num.length - 1):
    anotherNum = target - nums[i];
    // 如果map中有anotherNum这个元素并且下标不等于i,将i和anotherNum的下标存储到结果数组中,并返回
    break;
  return result;

算法复杂度分析

  • 时间复杂度: O(N), 其中 N 是数组中的元素数量。对于每一个元素 x,我们可以 O(1) 地寻找 target - x。
  • 空间复杂度: O(N), 其中 NN 是数组中的元素数量。主要为哈希表的开销。
相关文章
|
3月前
|
前端开发 JavaScript 开发者
JavaScript:无处不在的Web语言
JavaScript:无处不在的Web语言
|
2月前
|
索引 容器
两数之和(每天刷力扣hot100系列)
本题要求在数组中找出两数之和等于目标值的下标。解法一为暴力枚举,时间复杂度O(N²),空间复杂度O(1);解法二利用哈希表,将查找时间降为O(1),总时间复杂度O(N),空间复杂度O(N),实现以空间换时间的优化。
|
9月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
488 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
256 6
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
341 4
|
数据采集 负载均衡 安全
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
本文提供了多个多线程编程问题的解决方案,包括设计有限阻塞队列、多线程网页爬虫、红绿灯路口等,每个问题都给出了至少一种实现方法,涵盖了互斥锁、条件变量、信号量等线程同步机制的使用。
273 3
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
|
机器学习/深度学习 人工智能 自然语言处理
280页PDF,全方位评估OpenAI o1,Leetcode刷题准确率竟这么高
【10月更文挑战第24天】近年来,OpenAI的o1模型在大型语言模型(LLMs)中脱颖而出,展现出卓越的推理能力和知识整合能力。基于Transformer架构,o1模型采用了链式思维和强化学习等先进技术,显著提升了其在编程竞赛、医学影像报告生成、数学问题解决、自然语言推理和芯片设计等领域的表现。本文将全面评估o1模型的性能及其对AI研究和应用的潜在影响。
345 1
|
XML 监控 JavaScript
JavaScript 语言对企业上网监控的技术支持
在数字化企业环境中,上网监控对企业信息安全和提升员工效率至关重要。JavaScript 作为广泛应用的脚本语言,提供了强大的技术支持,包括数据获取与分析、与服务器端交互、监控页面加载时间和网络活动,助力企业有效管理上网行为,保障信息安全。
122 6
|
C++
Leetcode第一题(两数之和)
这篇文章介绍了解决LeetCode第一题“两数之和”的两种方法:暴力法和哈希表法,并提供了相应的C++代码实现。
275 0
Leetcode第一题(两数之和)
|
存储 C++ 容器
【LeetCode 13】1.两数之和
【LeetCode 13】1.两数之和
106 0