当前位置:网站首页>力扣刷题之求两数之和
力扣刷题之求两数之和
2022-08-01 18:56:00 【兰舟千帆】
力扣刷题之求两数之和
这道题是力扣的第一题,是刷题梦开始的地方。绝对不能小看,因为我很菜。
题目如下:
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
题目的要求是给定一个数组,给定一个目标值,然后让你在数组中找到两个值的和等于目标值,然后返回它们的下标。
一般我们不会这么快找到目标数据。通常会存在一个遍历的过程。一次移动索引和后面的值相加。类似于这样。知道寻找到目标值。
这样的代码是这样实现的。
for (int i = 0; i < nums.length; i++) {
for (int i1=i+1; i1 < nums.length; i1++) {
if(nums[i]+nums[i1]==target)
{
arr[0]= i;
arr[1]=i1;
}
}
}
按照这样的逻辑的话,我们还是用到了双重for循环,在查找目标值的时候,我们准会遍历到曾经遍历过的元素,这就是重复。
比如2+7
2+11
2+15
····
然后我们在使用7和后面的数相加的时候还是会去遍历11,15。
这样随着搜索次数遍历以及数据量的2增多,难免也是一个浪费时间效率的问题。
于是我们尝试这样去解决问题,能不能再遍历到这个元素之后,我们就把他记下来,然后下次用的时候不是直接用,这样多好。而且可以对应到值和下标。
现在这里是初始化,箭头就是遍历索引移动。

开始我们从4开始,4离目标值相差16,hashmap中一定是没有的,所以我们把4和它的索引放进去。
然后继续,到这里的时候我们走到7去查找13,发现map里面正好又这个key,于是我们正好将这个key对应的vaue返回,value就是索引。当然你反着来也是没有问题的。

想想,如果还是采用暴力穷举的话,那么是不是到了7我们还是for循环
那么就是
4+6
4+7
…
4+13
…
6+13
6+8
…
13+8
13+7
这样去找,我们进行了重复的遍历值,从这个小计算量就可以发现我们一共用了5次13,而我们如果用hashmap,我们就只经过它一次,将它记录,然后后面就可以直接找到它。是不是很方便。
实现代码
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int result = target-nums[i];
if(map.containsKey(result))
{
map.get(result);
arr[1]=i;
arr[0]=map.get(result);
}else {
map.put(nums[i],i);
}
}
这个效率是非常高的。

简单是一方面,简单的题能不能去理解到位就是另一回事了。
简单的题都没有难一点的题通过率高。
有时候的理解知识暂时的理解,如果算法基础不扎实的话,会马上忘掉,然后再次陷入到疑惑当中。算法的基础是数据结构加基本语法知识。
边栏推荐
- MySQL database - stored procedures and functions
- Industry Salon Phase II丨How to enable chemical companies to reduce costs and increase efficiency through supply chain digital business collaboration?
- 文库网站建设源码分享
- 483-82 (23, 239, 450, 113)
- 硬件大熊原创合集(2022/07更新)
- 通配符 SSL/TLS 证书
- C#/VB.NET Extract table from PDF
- 【pyqt5】自定义控件 实现能够保持长宽比地缩放子控件
- 请你说说多线程
- MySQL中超键、主键及候选键的区别是什么
猜你喜欢

odoo coding conventions (programming conventions, coding guidelines)

三种方案解决:npm WARN config global --global, --local are deprecated. Use --location=global instead.

Keras深度学习实战——交通标志识别

30分钟成为Contributor|如何多方位参与OpenHarmony开源贡献?

Leetcode74. 搜索二维矩阵

Zabbix6.0 DingTalk robot alarm

JVM运行时数据区与JMM内存模型是什么

Three solutions: npm WARN config global --global, --local are deprecated. Use --location=global instead.

LeetCode 0152. Product Maximum Subarray: dp + Roll in Place
![[pyqt5] Custom controls to achieve scaling sub-controls that maintain the aspect ratio](/img/99/34f223614449fcee8e9322dff2e839.png)
[pyqt5] Custom controls to achieve scaling sub-controls that maintain the aspect ratio
随机推荐
如何记录分析你的炼丹流程—可视化神器Wandb使用笔记【1】
国标GB28181协议EasyGBS平台兼容老版本收流端口的功能实现
随时随地写代码--基于Code-server部署自己的云开发环境
GZIPOutputStream 类源码分析
[National Programming] "Software Programming - Lecture Video" [Zero Basic Introduction to Practical Application]
电商库存系统的防超卖和高并发扣减方案
B005 - STC8 based single chip microcomputer intelligent street light control system
想随时、随地、随心使用数据库的朋友们,全体注意!
modbus总线模块DAM-8082
PanGu-Coder:函数级的代码生成模型
【LeetCode】Day109-最长回文串
如何让固定点的监控设备在EasyCVR平台GIS电子地图上显示地理位置?
WinRAR | Generate multiple installers into one installer
C#/VB.NET: extracted from the PDF document all form
#yyds dry goods inventory# Interview must brush TOP101: the last k nodes in the linked list
No need to crack, install Visual Studio 2013 Community Edition on the official website
odoo 编码规范(编程规范、编码指南)
ExcelPatternTool: Excel form-database mutual import tool
明尼苏达大学团队结合高通量实验与机器学习,实现有效可预测的特定位点重组过程,可调节基因编辑速度
Golang协程调度器scheduler怎么使用
