本文来源[[算法基础题]求两数之和]()
浪费生命的三座大山,迟到,防火墙,机械硬盘。
算法大佬就别看来看笑话了,回吧
场景问题
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums= [5, 7, 8, 10], target= 12因为 nums[0] nums[1] = 5 7 = 12
所以返回 [0, 1]
首先这道题属于算法中的基础,难度也简单,是一道经典题目,我也没想考大家。
但是大部分人都是采用双重for来暴力解决问题,也是十分简单 但是相对于数据量大的情况下时间复杂度并非最佳。
本篇介绍的是用一遍for循环搞定, 使用 哈希表
经过代码的实践,确保代码无误的情况下,一次搞定。
在进行迭代并将元素插入到表中的同时,我们还会回过头来检查表中是否已经存在当前元素所对应的目标元素。如果它存在,那我们已经找到了对应解,并立即将其返回。
需要注意的是这种实现是基于语言特性原生支持HashMap并且所需的额外空间取决于哈希表中存储的元素数量,该表最多需要存储 n 个元素。
还有许多人说 containsKey内部还是循环, 解释下错误原因,可以去看containsKey、hashMap源码,注意散列存储结构,查找是根据hashcode快速定位,通过hashcode值去快速定位。key为基本类型或String类型,都已经重写hashCode方法。所以定位很快,循环只是解决了hash冲突问题查找方案。
欢迎在评论写下你的程序员趣事~~
欢迎加入我们的小组织 ,大家都叫壳叔,期待你的到来。
我们也会定期在群内聊天记录中抽取有趣的事情或者小问题。
Group 企鹅群:200408242
本文发布于:2024-02-04 21:52:19,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170717236859936.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |