小白第一次做两数之和题目,用了上课学的C语言。整体思路比较简单,遍历数组按顺序求和,从首个数字开始,依次与之后的每一个数字求和,并判别是否等于目标数。若不相等,继续到下一个数字,再与接下来的数字求和,最终使得所有的数都能进行两两相加,得出结果。
一开始输出时得不出两个数的和,经过查找得知需要将returnSize设置为2,才能读取返回数组中的两个序号。
后来又出现上图中的错误,由这里得知了错误原因,将返回的数组设置为static数组,使得函数结束之后数组不会消失,能够返回。最终运行代码如下:
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
int i=0,j;
*returnSize = 2;
static int r[2]={0,0};
for(i=0;i<numsSize-1;i++)
for(j=i+1;j<numsSize;j++)
{
if(nums[i]+nums[j]==target)
{
r[0]=i;
r[1]=j;
return r;
}
}
return 0;
}
运行结果: