题目描述
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
分析
easy难度,两层循环遍历即可,注意vector迭代器的使用。需要了解怎么由迭代器计算出元素下标,这个方法很重要,需要掌握。直接使用当前迭代器减去容器begin迭代器,即可计算出当前迭代器指向元素的下标。
AC代码如下:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target)
{
int temp = 0;
vector<int> result(2);//结果
for(vector<int>::iterator it = nums.begin(); it < nums.end(); ++it)
{
temp = target - (*it);
//第二层遍历从当前迭代器的下一位开始,注意要恢复当前迭代器的位置
++it;
vector<int>::iterator i = it;
--it;
for(; i < nums.end(); ++i)
{
if(temp == (*i))
{
result[0] = it - nums.begin();//计算下标
result[1] = i - nums.begin();
return result;
}
}
}
return result;
}
};