最直观的方法是两次扫描数组,判断target-array[i]是否存在数组中。这样做的时间复杂度是O(n^2)。
如何保存之前的处理结果?可以使用hash table "target - array[i]是否存在数组中。
vector<int> addsToTarget(vector<int>& numbers,int target)
{
unordered_map<int,int> numToIndex;
vector<int> vi(2);
for(auto it = numbers.begin(); it != numbers.end(); it++)
{
if(numToIndex.count(target - *it))
{
vi[0] = numToIndex[target - *it] + 1;
vi[1] = (int)(it - numbers.begin()) + 1;
return vi;
}
numToIndex[*it] = (int)(it - numbers.begin());
}
}