关于qsort的问题

小雨润如酥 2017-08-28 10:35:07
排序问题:
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
int* singleNumber(int* nums, int numsSize, int* returnSize) {
int cmp(const void* a,const void* b)
{
return *(int*)a-*(int*)b;
}
qsort(nums,numsSize,sizeof(int),cmp);
for(int n=0;n<numsSize;n++)
{
printf("%d",*(nums+n));
}
int* result;
result=(int*)malloc(sizeof(int)*2);
for(int n=0;n<numsSize-1&&*returnSize<2;)
{
if(*(nums+n)!=*(nums+n+1))
{
*(result+*(returnSize))=*(nums+n);
(*returnSize)++;
n++;
}
else
{
n+=2;
}
}
if(*returnSize==1)
{
*(result+1)=*(nums+numsSize-1);
(*returnSize)++;
}
return result;
}

为何在[1403617094,-490450406,-1756388866,-967931676,1878401007,1878401007,-74743538,1403617094,-1756388866,-74743538,-490450406,-1895772685]
给出的解不对
1403617094LL1878401007LL1878401007LL-1895772685LL-1756388866LL-967931676LL-490450406LL-490450406LL-74743538LL-74743538LL1403617094LL-1756388866LL
qsort是不是有局限?
...全文
191 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-08-30
  • 打赏
  • 举报
回复
小心驶得万年船。
小雨润如酥 2017-08-29
  • 打赏
  • 举报
回复
这个是leetcode自己传进来的int,难道传进来就越界了?
wang0635 2017-08-28
  • 打赏
  • 举报
回复
1403617094, -490450406, ...这些数的绝对值很大,怕是 int 中放不下吧
cutmelon 2017-08-28
  • 打赏
  • 举报
回复
qsort没问题,是你的int越界了
小雨润如酥 2017-08-28
  • 打赏
  • 举报
回复
没有吧,我测试的数字没有问题啊。
赵4老师 2017-08-28
  • 打赏
  • 举报
回复
你写的cmp函数bug

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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