给定一个整数数组 nums
和一个目标值 target
,请你在该数组中找出和为目
标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
思路:将vector分为两块,前一块和后一块的和。
代码:
#include<iostream>
#include<vector>
using namespace std;
class Solution{
public:
vector<int> twoSum(vector<int> &nums, int target){
vector<int> abc;
for(unsigned i=0;i<nums.size();i++)
for(unsigned j=i+1;j<nums.size();j++)
if((nums[i]+nums[j])==target)
{
abc.push_back(i);
abc.push_back(j);
}
return abc;
}
};
int main()
{
Solution solution;
int target;
int ch;
vector<int> v;
while(cin >> ch)
{
v.push_back(ch);
if(ch ==0)
break;
}
cin >> target;
vector<int> zzy = solution.twoSum(v,target);
for(auto i : zzy)
cout << i << " ";
cout << endl;
}
问题:
vector不可以用下标形式添加元素(c++primer第93页)
其他方法:
https://www.cnblogs.com/grandyang/p/4130379.html