本文主要总结在一个数组中取出两个数,这两个数满足条件为:两数之和为制定目标值target,并且函数返回这两个数下表。
示例:
给定 nums = [5,6,7,8,9,10], target = 19
因为 nums[4] + nums[5] = 9 + 10 = 19
所以返回 [4, 5]
1.1解题思路
根据题意,可以看出这是一个组合问题,也就是高中数学常见的排列组合基本问题。
这题有两种常见的解法。第一种为暴力解法,也就是穷举法;第二种用哈希表。下面将分别示例两种解法代码
.1.2示例代码
1.2.1暴力解法(464ms,9.4MB)
#include <iostream>
#include <vector>
using namespace std;
//从一个数组中任意取出两个数,这两个数之和为target
vector<int> twoSum(vector<int>& nums, int target)
{
vector<int> result;
for (int i = 0; i < nums.size()-1; ++i) //穷举法
{
for (int j = i + 1; j < nums.size(); ++j)
{
if (target == (nums.at(i) + nums.at(j)))
{
result.push_back(i);
result.push_back(j);
}
}
}
return result;
}
int main()
{
vector&l