LeetCode中函数题中“多出来的参数“---returnsize

本文详细解析了LeetCode经典题目“两数之和”中returnSize参数的作用及常见错误,如参数数量错误和未正确赋值导致的输出问题,并提供了正确的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载:关于returnSize

第一次在leetcode上瞎逛就遇到了就遇到了它~

int* twoSum(int* nums, int numsSize, int target, int* returnSize)

   
   
  • 1

这个代码的实现并不是什么难解的方法(用上两个循环也就解决问题了,当然也有更好的方法但是这不是这篇Blog讨论的主题),但是执行代码的时候控制台总是会告诉我代码执行错误,或者出一些奇奇怪怪的东西。

类型提示
错误一solution.c: In function 'main’Line 61: Char 20: error: too many arguments to function ‘twoSum’
错误2预期结果为"[0,1]" , 而实际输出结果为"]"

错误1:我从网上找到一些解决这题的方法,照猫画虎,结果,会出现此类错误;

我认为,此类问题的原因是将twoSum中的returnSize参数直接删除的缘故。因为在后面的main函数(我们不被要求编写的部分)中调用了twoSum函数而且在那里确有returnSize的参数这就是"too many"的原因。

错误2:

观察实际输出和预期的输出可以发现,int* returnSize 其实是输出的值的个数,故我们要对其进行赋值。
错误2的原因是因为没有对其进行赋值。
下面是赋值分别为0,1,2,3时的控制台展示:

赋值大小实际输出预期输出
0[][0,1]
1[0][0,1]
2[0,1][0,1]

而赋值为3时,“执行出错”赋值为3时的代码执行结果

所以赋值的大小要不大不小刚刚好,至于此处为什么是2,就很明显了吧~ 【此题为1.两数之和】

写在最后

确是花费了好多时间,走了很多弯路。希望新手不要走我走过的弯路(一些CSDN上的文章确实让我花了好多的心思去研究,结果发现,嗯,不行)。


既然解决了returnSize的问题,不如把我们马上会遇到returnColumnSize也一并解决了吧。点击传送门,看博主如何用一套骚话解释Leetcode中的returnColumnsizes为何物?

### LeetCode C语言函数参数使用示例 #### 定义结构体作为输入参数 为了更好地理解如何在LeetCode平台上使用C语言编写带有复杂参数类型的函数,可以考虑如下例子。这里展示了一个名为`FilterSystem`的结构体,该结构体包含了两个成员:一个是用于存储关键字的字符数组;另一个是整数类型的年份字段。 ```c typedef struct { char keyword[10]; int year; } FilterSystem; ``` 此段代码定义了一种新的数据类型 `FilterSystem`, 这样就可以创建这种类型的变量来传递给其他函数[^1]。 #### 自定义比较函数 当涉及到对特定对象进行排序时,在C语言中通常需要提供自定义的比较逻辑。下面是一个简单的比较器实现: ```c int cmp(void *a, void *b){ return ((*(FilterSystem**)a)->year - (*(FilterSystem**)b)->year); } ``` 上述代码片段展示了如何通过指针访问结构体内嵌套的数据,并基于这些数据执行必要的计算以决定顺序关系。注意这里的返回值决定了排序的方向以及稳定性。 #### 处理潜在溢出风险 考虑到某些情况下可能会遇到数值范围超出预期的情况,建议对于可能引起溢出的操作采取预防措施。例如,将原本打算使用的`int`类型替换为更宽泛的`long`类型能够有效减少此类问的发生几率: ```c // 不推荐的做法 int sum = a + b; // 推荐做法 long long_sum = (long)a + (long)b; ``` 这样做不仅提高了程序的安全性和可靠性,同时也遵循了良好的编程实践原则[^2]。 #### 应用场景实例 假设有一个目要求根据关键词和发布年限筛选符合条件的信息条目,则可以通过构建相应的过滤条件并调用标准库中的`qsort()`来进行高效检索: ```c #include <stdlib.h> void filterAndSort(FilterSystem* items, size_t count) { qsort(items, count, sizeof(FilterSystem), cmp); // 对items按照year升序排列 /* 继续完成剩余的任务 */ } /* 主函数或其他地方调用filterAndSort() */ ``` 这段代码首先导入了所需的头文件,接着实现了辅助性的`filterAndSort()`方法,它接收一个由个`FilterSystem`组成的列表及其大小作为入参,最后利用内置工具完成了目标功能[^3]。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值