【发布时间】:2019-12-16 16:57:00
【问题描述】:
我是 LeetCode 的新手,正在努力提高我的问题解决技巧。我正在尝试解决 C 中的二和问题,但在最终的 return 语句中遇到了麻烦。 LeetCode 最初提供给我的代码是一个名为“int* twoSum”的函数,其目标是在一个数组中找到产生目标数字的两个索引。该函数列出了几个我假设在 main 中提供的参数,因为它没有显示。
我将函数的名称更改为“int twosum”并删除了 int* returnSize,因为我不喜欢不必要的按地址而不是按值传递,并且觉得它不会产生重大影响。但是,在尝试运行我的代码后,我遇到了警告错误:“从返回类型为 'int' 的函数中返回 'int *' 会在没有强制转换的情况下从指针生成整数”
了解这个问题或之前在 LeetCode 上解决过该问题的人能否提供有关我需要更正的见解?谢谢。
int twoSum(int *nums, int numsSize, int target){
int outerCount; //loop control variable for outer loop
int innerCount; //loop control variable for inner loop
int array[2]; //array that stores indices of numbers that produce target
for(outerCount = 0; outerCount < numsSize; outerCount++)
for(innerCount = outerCount + 1; innerCount < numsSize; innerCount++)
{
if(nums[outerCount] + nums[innerCount] == target)
{
array[0] = outerCount;
array[1] = innerCount;
}
}
return array;
}
【问题讨论】:
-
您可以更改函数的签名吗?这个困境有很多解决方案。您可以使数组静态,或返回结构,或使用动态内存,或更改输入数组并使用它来返回值,etc...
-
是的,您可以更改函数的签名。我见过一些与我类似的解决方案,但我似乎没有正确使用按地址返回数组。