题目的描述大概是这样:
给一个整形的数组nums,和一个目标值target,要求在数组中找到两个数和,其结果为该目标值,并返回这两个数的下标。
假设给nums=[2,7,11,15],target=9;
所以,返回的结果为 [0,1]
最直接的方法就是,对数组遍历,假设数组中的一个数i为定值,然后找和它匹配的数(target-i)
C语言:
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
int i=0;
int j=0;
int *ret= (int *)malloc(sizeof(int)*2);
for(;i<=numsSize-1;i++)
{
for(j=i+1;j<numsSize;j++)
{
if(nums[i]+nums[j]==target)
{
ret[0]=i;
ret[1]=j;
return ret;
}
}
}
return ret;
}
C++:
class Solution {
public:
vector<int> twoSum(vector<int> &nums,int target) {
vector<int> ret(2);
int num(nums.size());
for(int i=0;i<num-1;i++)
{
for(int j=i+1;j<num;j++)
{
if(nums[i]+nums[j]==target)
{
ret[0]=i;
ret[1]=j;
return ret;
}
}
}
return ret;
}
};
优化方法待续…