c - 问题中函数无法返回 returnSize 数组中的元素

标签 c arrays loops for-loop pointers

我尝试在在线编程平台 LeetCode 上解决一道 C 编程题 Two Sum 我无法返回整数指针大小。

问题: 给定一个整数数组,返回两个数字的索引,使它们加起来等于一个特定的目标。您可能会假设每个输入都只有一个解决方案,并且您可能不会两次使用相同的元素。

例子:

给定 nums = [2, 7, 11, 15], target = 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],但实际输出是]

最佳答案

该函数的接口(interface)旨在提供两部分结果,即数组及其大小。
您不应该通过覆盖 returnSize 来返回数组。
您应该通过将返回数组的大小写入指针 returnSize 引用的 int 变量来返回返回数组的大小(并可能检查它是否不是 NULL 指针)。

数组(即新分配的指针)应该通过 return 返回,您当然会这样做。但是通过覆盖返回参数指针来这样做是间接导致这里出现问题的原因。 (需要一个 mre 来追踪观察到的问题。)

顺便说一句,我只是通过看到您忽略并覆盖了一个参数(指针)而发现了这一点。如果那是正确的,那么函数的接口(interface)将是低效的。情况可能如此,但通常不是为了挑战。

关于c - 问题中函数无法返回 returnSize 数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57883375/

相关文章:

c - 如何根据用户给出的数字打印包含文本的金字塔?

c - 删除 s1 中与 s2 中任意字符匹配的每个字符

php - 数组插入时间跳跃

java - 输入空行时退出java程序

c - 关系比较结果C中for()循环的未使用错误

jquery .each 仅适用于第一个元素

c - 如何求两组数据的平均值?

为 Windows 创建应用程序兼容性垫片

java - Java中数组是按值传递还是按引用传递?

java - 将字符串拆分为单词