给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> result;
for(int i=0;i<nums.size();i++){
int product=target-nums[i];
//auto自动变量
//auto和find一起用才行
//返回的是第一个找到的元素
auto pos=find(nums.cbegin(),nums.cend(),product);
//cend不可修改,end可以修改
//cend指向的是末尾元素的下一个位置
if(pos!=nums.cend()){
int index=distance(nums.cbegin(),pos);
if(index==i)
continue;
//对于在容器中添加类的对象时, 相比于push_back,emplace_back可以避免额外类的复制和移动操作.
result.emplace_back(i);
result.emplace_back(index);
break;
}
}
return result;
}
};
int main (){
int n,m,l;
cin>>n;
vector<int> result,result1;
Solution solution;
for(int i=0;i<n;i++){
cin>>m;
result.push_back(m);
}
cin>>l;
result1=solution.twoSum(result,l);
for(int j=0;j<result1.size();j++){
cout<<result1[j]<<" ";
}
cout<<endl;
system("pause");
}