题目描述:给定一个整数数组 nums
和一个整数目标值 target
,请你在该数组中找出 和为目标值 target
的那两个整数,并返回它们的数组下标。
示例:
输入:nums = [2,7,11,15], target = 9 输出:[0,1]
基础知识:
vector<int>a 类,定义一维数组
vector<int>b[ size ] 定义二维vector数组
vector<typename>::iterator it 迭代器(iterator) it
it->first 下标/键值(key)
it->second 对应数据(value)
hash.find() find函数没有找到对应值时会返回一个end函数(hash.end())
具体代码:
#include <vector>
using namespace std;
vector<int> twosum(vector<int>&nums,int target){
map<int,int>hashtable;//初始哈希表
for(i=0;i<nums.size();++i){//固定i,找其相加为target的值
auto it=hashtable.find(target-nums[i]);//auto为map(int,int)
if(it!=hashtable.end()){
return{it->second,i};//此时value值为hash值(如下)
}
hashtable[nums[i]]=i;//空桶装入i(每个i都装进去)
//下标i为hash值,nums[i]为key值
}
return{};
}
};