题目描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 方法1:直接每次从头到尾比较 主要思路: (1)依次取出数组中的元素,和其后面的其它元素相加,判断是否等于target; (2)注意比较时的边界条件 ?
#include "stdafx.h"
#include <vector>
#include <iostream>
using namespace std;
vector<int> twoSum(const vector<int>& src, const int& target)
{
vector<int> dst;
if (src.size() < 2)
{
return dst;
}
for (int i = 0; i < src.size() - 1; i++)
{
for (int j = i + 1; j < src.size(); j++)
{
if (src[i] + src[j] == target)
{
dst.push_back(src[i]);
dst.push_back(src[j]);
}
}
}
return dst;
}
int main()
{
vector<int> src;
src.push_back(2);
src.push_back(7);
src.push_back(11);
src.push_back(15);
vector<int> dst;
dst = twoSum(src, 10);
cout << dst.size() << endl;
for (int k = 0; k < dst.size(); k++)
{
cout << dst[k] << endl;
}
getchar();
return 0;
}
|