题目
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素
代码
最快的
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int,int> mymap;
int x=0;
for(int i=0;i<nums.size();i++)
{
x=target-nums[i];
if(mymap.find(x)!=mymap.end())//找到元素
{
return {i,mymap[x]};
}
mymap[nums[i]]=i;//这个如果单独拿出来一次循环赋值,就要在if判断中进行不重复判断
}
return {};
}
};
再来一重循环的
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
map<int,int> mymap;
int x=0;
for(int i=0;i<nums.size();i++)
{
mymap[nums[i]]=i;
}
for(int i=0;i<nums.size();i++)
{
x=target-nums[i];
if(mymap.find(x)!=mymap.end()&&mymap[x]!=i)//找到元素
{
return {i,mymap[x]};
}
}
return {};
}
};