题目:
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
解题大致思路:
个人感觉没什么技巧,就按照正常思路,利用两个循环把数组中元素加一遍,然后判断是否与目标值相等,不过这里还要保证不能是数组中的同一个元素。题目中还有一个要求就是只对应一种答案,所以找到符合条件的下标值之后就需要跳出整个循环,返回得到的下标值即可。
代码如下:
class Solution{
public:
int* result(vector<int> &nums,int target){ //函数返回的是个数组
int *a=NULL;
int count=0;
for(int i=0;i<nums.size()-1;i++) //size()函数返回的是数组的大小
{
for(int j=i+1;j<nums.size();j++)
{
if(nums[i]+nums[j]==target)
{
*a=i;
*(a+1)=j;
count=1;
return a;
}
break;
}
if(count==1)
break;
}
return a;
}
};
这个比较麻烦了一点,下面有一个稍微简单点的方法:
class Solution{
public:
vector<int> result(vector<int> &nums,int target) //返回值是用vector定义的动态数组
{
vector<int> x;
int count=0;
for(int i=0;i<nums.size()-1;i++) //size()函数返回值是数组的大小
{
for(int j=i+1;j<nums.size();j++)
{
if(i!=j&&nums[i]+nums[j]==target)
{
x.push_back(i); //push_back() 表示给数组x尾部插入元素
x.push_back(j);
count==1;
return x;
}
break;
}
if(count==1)
break;
}
return x;
}
};