各位大佬这是leetcode第一题求两数之和,为什么我的代码总是过不了,运行结果总是【0,0】

熊猫果茶 2018-05-26 04:16:26
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* twoSum(int* nums, int numsSize, int target) {
int i,j;
int c[2];
int*fp=NULL;
for(j=0;j<=numsSize-1;j++)
for(i=j+1;i<=numsSize;i++)
{
if(nums[j]+nums[i]==target)
{
c[0]=j;
c[1]=i;
}
}
fp=c;
return fp;
}

这是我的代码,希望各位大佬能帮忙看看(c语言)
...全文
1473 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
熊猫果茶 2018-05-30
  • 打赏
  • 举报
回复
引用 5楼自信男孩 的回复:
解决办法是可以使用malloc/free为fp分配空间,或者将c定义为指针,然后用malloc/free申请空间。或者最简单的方法就是加static
 static int c[2];
其他都不需要修改,直接返回fp即可; 原因是修改了数组的声明周期,加static,c数组是在静态数据段申请,它的生命周期是直到程序运行结束而不是函数调用结束了。
明白了,谢谢
自信男孩 2018-05-29
  • 打赏
  • 举报
回复
这个是返回局部数组是无意义的。因为局部变量(数组)的生命周期是在函数调用时创建,在函数调用结束后自动释放。因此返回局部数组是无意义的,已经被释放的空间再使用数组里的元素是未定义的。
自信男孩 2018-05-29
  • 打赏
  • 举报
回复
解决办法是可以使用malloc/free为fp分配空间,或者将c定义为指针,然后用malloc/free申请空间。或者最简单的方法就是加static
 static int c[2];
其他都不需要修改,直接返回fp即可; 原因是修改了数组的声明周期,加static,c数组是在静态数据段申请,它的生命周期是直到程序运行结束而不是函数调用结束了。
熊猫果茶 2018-05-28
  • 打赏
  • 举报
回复
引用 1楼leetow2006 的回复:
你返回的是地址,不是整数
那应该怎么写
熊猫果茶 2018-05-28
  • 打赏
  • 举报
回复
引用 1楼leetow2006 的回复:
你返回的是地址,不是整数
这函数的返回值不就是一个指针吗?
leetow2006 2018-05-26
  • 打赏
  • 举报
回复
你返回的是地址,不是整数

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧