一、题目
二、代码
- 解法一
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
//定义返回值容器
vector<int> answer;
//双重循环遍历向量容器
for(int i=0;i<nums.size();i++)
{
for(int j=i+1;j<nums.size();j++)
{
//若两数相加等于目标值
if(nums[i]+nums[j] == target)
{
//将下标存入向量容器
answer.push_back(i);
answer.push_back(j);
//返回向量容器
return answer;
}
}
}
return {};
}
};
- 解法二
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
//定义返回值容器
vector<int> answer;
//定义map容器,key值存nums值,values存nums下标
map<int,int> numsMap;
//循环遍历nums容器
for(int i=0;i<nums.size();i++)
{
//找到在i之前,是否存在一个数加上num[i]等于target值
if(numsMap.find(target-nums[i]) != numsMap.end())
{
//将下标存入向量容器
answer.push_back(i);
answer.push_back(numsMap[target-nums[i]]);
//返回向量容器
return answer;
}
//若不存在,将nums的值和下标存入map容器中
numsMap[nums[i]] = i;
}
return {};
}
};