给一个列表,和一个目标值,请问列表中哪两个数字之和是这个目标值,返回对应的下标。
解法:
最好的方式是使用哈希表,做值和index的映射,从值映射到index。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int ,int> a; //建一个哈希表
int i;
for(i=0;i<nums.size();i++)
{
if(a.count(target-nums[i])>0){ //在往表中添加键值对之前,先回过头看看表中是否存在另一个
//参与计算target的数字,如果有,则找到了,返回。
int c = i;
int b = a[target-nums[i]];
return {b,c};
}
a[nums[i]] = i; // 如果整个for循环都没有,那说明返回的index之一就是最后一个i值。
}
return {a[nums[i]],i};
}
};