给定一个int型一维数组,和一个目标值target,用一个int型一维数组返回数组中每一对相加等于target的的键值的index。
具体函数如下:
#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
vector<int> twosum(vector<int>& nums,int &target){
unordered_map<int,int> m; //用哈希表来储存键值对,以空间换取时间,把查询的时间复杂度降到O(1)
vector<int> v;
int sub;
for(int i=0;i<nums.size;i++){ //遍历数组nums
sub=target-nums[i]; //求出和nums[i]相加可以等于target的值sub
if(m.count(nums[i])!=0){ //判断m[nums[i]]是否存在
v.push_back(m[nums[i]]);
v.push_back(i);
}
else{
m[sub]=i;
}
}
return v;
}