1.问题描述
给定一个整数数组 nums
和一个整数目标值 target
,请你在该数组中找出 和为目标值 target
的那 两个 整数,并返回它们的数组下标。
示例 1:
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:
输入:nums = [3,2,4], target = 6
输出:[1,2]
示例 3:
输入:nums = [3,3], target = 6
输出:[0,1]
2.解题思路
(1)两层循环遍历整个数组中的数据
(2)循环体内判断两数相加之和是否等于目标值
(3)若相等,则输出数组下标i,j;并退出循环。
3.代码
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
//vector类型为长度可变的数组,更灵活。需要#include<vector>
vector<int> a;
//int a[2];这里指定返回的是verctor类型,故这里不能用普通数组array
for(int i=0;i<nums.size();i++)
{
for(int j =i+1;j<nums.size();j++)
{
if(nums[i]+nums[j] == target)
{
//在a的最后添加元素
a.push_back(i);
a.push_back(j);
break;
}
}
}
return a;
}
};
4.注意事项
(1)j=i+1,是因为数字不重复。
(2)void push_back(const T& x):向量尾部增加一个元素X;
push_back将i和j添加到名为a的动态数组中。再将a输出。
5.知识点
1.vector容器 https://www.runoob.com/w3cnote/cpp-vector-container-analysis.html