版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiangxianghehe/article/details/81295396
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
答案:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map <int,int> m;
vector<int> res;
for(int i = 0;i<nums.size();++i)
{
m[nums[i]] = i;
}
for(int i=0;i<nums.size();++i)
{
int t = target - nums[i];
if(m.find(t)!=m.end()&&m[t]!=i)
{
res.push_back(i);
res.push_back(m[t]);
break;
}
}
return res;
}
};