题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
以下是我的解题代码:
/**
fg=target-nums[i];
for(int k = i+1;k<numsSize;k++)
{
if(fg==nums[k])
{
printf("[%d,%d]",k,i);
break;
}
}
}用C语言写的代码 然后力扣表示我的输出只有一个“[”
我还特意用printf打印了一下 能打印出正确的结果 但是打印不算 一定要函数返回的数组
The returned array must be malloced, assume caller calls free().
这句话已经提示你需要动态分配数组空间了,你直接在函数里面定义的局部变量,在函数执行结束后,就无效了,所以返回是错误的值。
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
int *array;
array=(int *)malloc(5*sizeof(int));
int i,k,fg=0;
int flag = 0;
for(i=0;i<numsSize;i++)
{
fg=target-nums[i];
for(k = i+1;k<numsSize;k++)
{
if(fg==nums[k])
{
flag = 1;
//printf("[%d,%d]\n",k,i);
break;
}
}
if(flag == 1)
{
break;
}
}
array[0]=i;
array[1]=k;
*returnSize = 2;
return array;
}
没有返回returnsize