哈希-力扣01两数之和

这篇具有很好参考价值的文章主要介绍了哈希-力扣01两数之和。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

哈希-力扣01两数之和,哈希算法,leetcode,算法

题目

给定一个整数数组 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 <= 10^4
  • -10^9 <= nums[i] <= 10^9
  • -10^9 <= target <= 10^9
  • 只会存在一个有效答案

思考 

本题是力扣题库中的第一题,解决方法有很多,笔者在这里用一种小于时间复杂度O(n^2),因为涉及到了查找,我们九二一运用我们的哈希算法,本题由于需要下表和元素值要对应,为了查找方便,我们可以将unordered_map中的key存储元素,value存储下表,这样可以实现一一对应,查找目标数与数组元素的差值进行寻找,因为只有一个有效答案,大大简化了问题,下面请根据笔者的代码来理解这道题目。

代码实现

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
    	unordered_map<int,int>mp;//利用undered_map哈希表用于键值配对
    	for(int i=0;i<nums.size();i++){
			auto iter=mp.find(target-nums[i]);//设置迭代器存储对相应值的数据
			if(iter!=mp.end())//如果找到
			    return {iter->second,i};//那么返回iter指向的指,即下表和i对应下表
			mp[nums[i]]=i;//插入该值
		}
		return {};//如果一直找不到返回空
    }
};

总结

本题带我们熟悉了unordered_map的用法,用元素当key用下表当value进行配对,同样压缩了时间并且完成了想要的操作,希望通过本篇再次熟悉哈希,并且掌握哈希寻找元素和配对元素的思想。

尾声

本题是哈希算法的序章,再次采用了unordered_map,希望本篇内容能给你带来益处,如果觉得笔者写的还不错,记得留下你的点赞哦

哈希-力扣01两数之和,哈希算法,leetcode,算法文章来源地址https://www.toymoban.com/news/detail-808457.html

到了这里,关于哈希-力扣01两数之和的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023/07/01_leetcode每日一题_1. 两数之和

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

    2024年02月12日
    浏览(40)
  • Day 6 哈希表part01:242.有效的字母异位词 , 349. 两个数组的交集 , 202. 快乐数, 1. 两数之和

    哈希表理论基础  要了解哈希表的内部实现原理,哈希函数,哈希碰撞,以及常见哈希表的区别,数组,set 和map。   什么时候想到用哈希法,当我们遇到了 要快速判断一个元素是否出现集合里的时候 ,就要考虑 哈希法 。  这句话很重要,大家在做哈希表题目都要思考这

    2024年02月15日
    浏览(39)
  • 代码随想录第6天| 哈希表理论基础 ,LeetCode242.有效的字母异位词,LeetCode349. 两个数组的交集,LeetCode202. 快乐数,LeetCode1. 两数之和

    哈希表(散列表)理论基础 : 哈希表是根据关键码的值而直接进行访问的数据结构。 直白来讲其实数组就是一张哈希表。   什么时候想到用哈希法, 当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法 。 当我们遇到了要快速判断一个元素是否出现集

    2024年02月10日
    浏览(41)
  • 算法训练第5天|哈希表理论基础 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

    哈希表是根据 关键码 的值而直接进行访问的数据结构。 一般哈希表都是用来快速判断一个元素是否出现集合里。 数组、集合set、映射map 力扣链接 题目描述: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意: 若  s  和  t   中每个字符出现的

    2024年02月19日
    浏览(34)
  • 代码随想录 -- 哈希表--两数之和

    力扣hot1:两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] +

    2024年02月09日
    浏览(29)
  • 解决两数之和问题的哈希表方法

    在给定整数数组中寻找和为目标值的两个整数,并返回它们的数组下标。通过暴力枚举或哈希表方法,时间复杂度小于O(n^2)。Java和C++代码解决方案。

    2024年02月01日
    浏览(35)
  • 【力扣】1. 两数之和

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回

    2024年02月16日
    浏览(23)
  • 力扣简单1道_两数之和

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

    2024年02月15日
    浏览(23)
  • C语言力扣简单题-两数之和

     (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答

    2024年02月02日
    浏览(25)
  • Leetcode 1.两数之和

    暴力、哈希 题目描述 给定一个整数数组  nums  和一个整数目标值  target ,请你在该数组中找出  和为目标值  target   的那  两个  整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序

    2024年04月10日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包