c - 函数不能返回returnSize数组中的元素的问题
问题描述
我试图在在线编码平台 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]
但实际输出是]
”</p>
解决方案
该函数的接口旨在提供两部分结果,即数组及其大小。
您不应该通过覆盖来返回数组returnSize
。
您应该通过将返回数组的大小写入指针引用的 int 变量来返回它returnSize
(并且可能检查它是否不是 NULL 指针)。
数组(即新分配的指针)应该通过返回return
,你当然会这样做。但是通过覆盖返回参数指针来做到这一点是间接导致问题的原因。(将需要一个mre来跟踪观察到的问题。)
顺便说一句,我只是通过看到您忽略并覆盖了其中一个参数,即指针而发现了这一点。如果这是正确的,那么函数的接口将是低效的。情况可能是这样,但通常不是为了挑战。
推荐阅读
- gams-math - 如何在 GAMS 中编写分段函数代码?
- flutter - 为什么变换孩子会被剪裁(颤振)
- java - Java读写,计算行数并放入数组
- javascript - 如何在 Vue 3 中的 Axios 请求的 .then 中使用 $emit
- java - 如果我正在使用测试套件并且每个类都在将数据写入下一个
- javascript - 当我添加一个包时,我收到 webpack < 5,默认情况下用于包含 node.js 核心模块的 polyfills。现在情况不再如此
- php - Wordpress 如何使用自定义查询来获取登录用户的帖子标题?
- python - plotly - 线条不在 yaxis 上开始
- angular - 跟踪游戏元素的位置
- flutter - 升级到 Flutter 2 后,无法将鼠标悬停在调试器中的变量上以显示值