怎么做游戏网站,google国际版,wordpress h5幻灯片,资讯类网站建设方案书题目
给定一个整数数组 nums 和一个整数目标值 target#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数#xff0c;并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是#xff0c;数组中同一个元素在答案里不能重复出现。
你可以按任意顺…
题目
给定一个整数数组 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:vectorint twoSum(vectorint nums, int target) {unordered_mapint,intmp;//利用undered_map哈希表用于键值配对for(int i0;inums.size();i){auto itermp.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希望本篇内容能给你带来益处如果觉得笔者写的还不错记得留下你的点赞哦