当前位置:网站首页>力扣刷题之求两数之和
力扣刷题之求两数之和
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);
}
}
这个效率是非常高的。

简单是一方面,简单的题能不能去理解到位就是另一回事了。
简单的题都没有难一点的题通过率高。
有时候的理解知识暂时的理解,如果算法基础不扎实的话,会马上忘掉,然后再次陷入到疑惑当中。算法的基础是数据结构加基本语法知识。
边栏推荐
- Leetcode74. 搜索二维矩阵
- Break the performance ceiling!AsiaInfo database supports more than 1 billion users, with a peak of one million transactions per second
- 重保特辑|拦截99%恶意流量,揭秘WAF攻防演练最佳实践
- The XML configuration
- 【全民编程】《软件编程-讲课视频》【零基础入门到实战应用】
- 请你说说多线程
- 三种方案解决:npm WARN config global --global, --local are deprecated. Use --location=global instead.
- B005 - STC8 based single chip microcomputer intelligent street light control system
- opencv如何实现图像倾斜校正
- 消息模板占位符的使用
猜你喜欢

在全志V853开发板试编译QT测试

暑假第二周总结博客

通配符 SSL/TLS 证书

LeetCode 0152. 乘积最大子数组:dp + 原地滚动

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

Become a Contributor in 30 minutes | How to participate in OpenHarmony's open source contributions in multiple ways?
Stop using MySQL online DDL

No need to crack, install Visual Studio 2013 Community Edition on the official website

Leetcode71. Simplified Paths

Hardware Bear Original Collection (Updated 2022/07)
随机推荐
[National Programming] "Software Programming - Lecture Video" [Zero Basic Introduction to Practical Application]
驱动上下游高效协同,跨境B2B电商平台如何释放LED产业供应链核心价值?
How to record and analyze your alchemy process - use notes of the visual artifact Wandb [1]
明尼苏达大学团队结合高通量实验与机器学习,实现有效可预测的特定位点重组过程,可调节基因编辑速度
shell脚本专题(07):文件由cfs到bos
SQL函数 TO_DATE(一)
Live chat system technology (8) : vivo live IM message module architecture practice in the system
【服务器数据恢复】服务器Raid5阵列mdisk组中多块磁盘离线的数据恢复案例
No need to crack, install Visual Studio 2013 Community Edition on the official website
Go iota关键字与枚举类型实现原理是什么
安徽建筑大学&杭州电子科技大学|基于机器学习方法的建筑可再生能源优化控制
Goldfish Brother RHCA Memoirs: CL210 manages OPENSTACK network -- network configuration options
Detailed explanation of DBPack SQL Tracing function and data encryption function
消息模板占位符的使用
通配符 SSL/TLS 证书
[pyqt5] Custom controls to achieve scaling sub-controls that maintain the aspect ratio
The life cycle and scope
Leetcode75. Color Classification
[Kapok] #Summer Challenge# Hongmeng mini game project - Sudoku (3)
The function realization of the national standard GB28181 protocol EasyGBS platform compatible with the old version of the inflow port
