【发布时间】:2020-01-12 22:53:40
【问题描述】:
我尝试解决在线编码平台 LeetCode 中的一个 C 编码问题二和 我无法返回整数指针大小。
问题: 给定一个整数数组,返回两个数字的索引,使它们加起来为一个特定的目标。您可以假设每个输入都只有一个解决方案,并且您不能两次使用相同的元素。
例子:
给定 nums = [2, 7, 11, 15],目标 = 9,
因为 nums[0] + nums[1] = 2 + 7 = 9, 返回 [0, 1]。
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
int i,j,sum=0,n1=0,n2=0,sz=1;
int *re;
re = (int*)malloc(sizeof(returnSize));
for(i=0;i<numsSize;i++){
if(sum==target){
break;
}
n1 = i;
for(j=i+1;j<numsSize;j++){
sum = nums[i]+nums[j];
if(sum==target){
n2 = j;
re[0] = n1;
re[1] = n2;
break;
}
}
}
return re;
}
“我希望nums = [2, 7, 11, 15]、target = 9的输出是[0, 1],但实际输出是]”
【问题讨论】:
-
另请注意,您分配的内存内容并不总是被初始化。
-
你不应该通过覆盖
returnSize来返回数组。您应该通过将返回数组的大小写入returnSize引用的变量来返回。 -
LeetCode 的问题陈述有缺陷。它无法说明
returnSize参数的用途,如果是返回数组的大小,则单位是元素还是字节。而且,由于大小必然是两个元素,所以不清楚为什么会有参数浪费地返回这个常量。
标签: c arrays loops for-loop pointers