当前位置: 首页 > backend >正文

18-算法打卡-哈希表-两数之和-leetcode(1)-第十八天

1 题目地址

1. 两数之和 - 力扣(LeetCode)1. 两数之和 - 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。 示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target = 6输出:[1,2]示例 3:输入:nums = [3,3], target = 6输出:[0,1] 提示: * 2 <= nums.length <= 104 * -109 <= nums[i] <= 109 * -109 <= target <= 109 * 只会存在一个有效答案 进阶:你可以想出一个时间复杂度小于 O(n2) 的算法吗? https://leetcode.cn/problems/two-sum/description/


2 题目说明

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。

你可以按任意顺序返回答案。

 

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

 

提示:

  • 2 <= nums.length <= 104
  • -109 <= nums[i] <= 109
  • -109 <= target <= 109
  • 只会存在一个有效答案

3 解题思路

方式一:暴力解法,两层for循环,时间复杂度O(n^2)

方式二:采用使用哈希法
       遍历的过程中使用哈希存储已经遍历的数据,然后来询问哈希中是否存在某个数据,如果存在则拿到数据对应的索引下标,针对这种场景,可以使用Map来存储,key存元素  value存索引位置。


4 代码编写


4.1 暴力方式

class Solution {public int[] twoSum(int[] nums, int target) {for (int i=0; i<nums.length-1; i++) {for (int j=i+1; j<nums.length; j++) {// 如果两数之和等于targetif (nums[i]+nums[j]==target) {return new int[] {i, j};}}}return null;}
}


4.2 哈希法

class Solution {public int[] twoSum(int[] nums, int target) {// 存放已遍历的数据Map<Integer, Integer> tempMap = new HashMap<>();for (int i=0; i<nums.length; i++) {int need = target - nums[i];if (tempMap.containsKey(need)) {return new int[] {tempMap.get(need), i};}tempMap.put(nums[i], i);}return null;}
}

 

http://www.xdnf.cn/news/263.html

相关文章:

  • 智能体时代的产业范式确立,中国企业以探索者姿态走出自己的路
  • [密码学实战]详解gmssl库与第三方工具兼容性问题及解决方案
  • Python语言基础教程(上)4.0
  • 15.4K Star!Vercel官方出品,零基础构建企业级AI聊天机器人
  • 进程(转账,卖票)
  • C#核心笔记——(六)框架基础
  • 【MySQL】数据库和表的操作详解
  • 6.6 “3步调用ChatGPT打造高可靠Python调度器,零依赖实现定时任务自动化“
  • Linux工具学习之【vim】
  • 医学图像中的不同模态图像详细介绍
  • VirtualBox导入 .ova 文件出错,怎么解决
  • Java入门-Map双列集合
  • 通过C# 将Excel表格转换为图片(JPG/ PNG)
  • 51单片机实验七:EEPROM AT24C02 与单片机的通信实例
  • 《计算机视觉度量:从特征描述到深度学习》—工业检测大模型RAG白皮书
  • 12芯束装光纤不同包层线颜色之间的排列顺序
  • Linux 内核开发/测试工具对比 Windows 驱动验证工具 (Driver Verifier)
  • 从数据集到开源模型,覆盖无机材料设计/晶体结构预测/材料属性记录等
  • 70. 爬楼梯
  • 环境搭建与入门:Flutter SDK安装与配置
  • 《数据结构初阶》【时间复杂度 + 空间复杂度】
  • Echart 地图放大缩小
  • SQL SERVER里面也可以插入存储过程,操作TCP,WEBSOCKET吗?数据发生改变时用于通知客户端
  • C++手撕STL-其一
  • 1、企业级在线办公套件推荐:OnlyOffice 全面介绍
  • 容性串扰-信号与电源完整性分析
  • [滑动窗口]209. 长度最小的子数组
  • 大模型落地实践:哪些行业正在被AI颠覆?
  • STM32单片机C语言
  • AI数字人如何深度赋能政务场景?魔珐科技政务应用全景解读