此题是查找数组中两元素之和等于目标数字的下标
1)很容易想到用两重循环来求解
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> result;
int len=nums.size();
for(int i=0;i<(len-1);i++)
for(int j=i+1;j<len;j++)
{
int sum=nums[i]+nums[j];
if(sum==target)
{
result.push_back(i);
result.push_back(j);
return result;
}
}
return result;
}
};
2)结合map来实现,遍历一次数组
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> result;
map<int,int> m;
int len=nums.size();
for(int i=0;i<len;i++)
{
int left=target-nums[i];
if(m.count(left)!=0)
{
result=vector<int>{m[left],i};
return result;
}
m[nums[i]]=i;
}
return result;
}
};