它不适用于leetcode,但它适用于vscode——一个数组问题
Posted
技术标签:
【中文标题】它不适用于leetcode,但它适用于vscode——一个数组问题【英文标题】:It doesn't work on leetcode but it works on vscode -- an array problem 【发布时间】:2021-05-07 07:27:16 【问题描述】:更新:它不起作用,因为我没有在函数内部设置returnSize
,并且 leetcode 期望该参数具有 Jerry Jeremiah 在 cmets 中所说的值。
问题出在:给定数组 nums 由 2n
元素组成,形式为 [x1,x2,...,xn,y1,y2,...,yn]
。
以[x1,y1,x2,y2,...,xn,yn]
的形式返回数组
int* shuffle(int* nums, int numsSize, int n, int* returnSize)
int *answer = (int*) malloc(numsSize * sizeof(int));
int a,k,i;
for (i = 0, k = n, a = 0; i < numsSize-1; i += 2, k++, a++)
answer[i] = nums[a];
answer[i+1] = nums[k];
return answer;
首先我认为我无法正确分配内存,但我认为并非如此。
我已经尝试了其他几种方法来解决这个问题,但输出都是一样的,我不知道为什么?
即使代码相同,我的输出对于相同的测试也会有所不同。其中一些是:[]、]、[2,1]
我不是在寻找解决问题的另一种方法。我只是想知道为什么我得到这些输出 leetcode 但不在我的 vscode 中。
你们能帮我弄清楚吗?
【问题讨论】:
尝试在调试器中单步调试代码。此外,请在与他人共享之前格式化您的代码(为了您自己的理智,TBH) 按要求重新格式化。 你没有在函数内部设置 returnSize 并且 leetcode 可能期望该参数有一个值。 哦.. 成功了。谢谢! @Dankindonut,您将 returnSize 设置为什么?我也有类似的问题。 【参考方案1】:将'\0'
添加到内存末尾可能会有所帮助
int* answer=(int*)malloc((numsSize + 1) * sizeof(int))
answer[(numsSize + 1)] = '\0';
【讨论】:
谢谢你的回答,但是当我尝试它时,编译器给出了堆缓冲区溢出错误。 它是一个 int 数组 - 不是一个 char 字符串。 是的,我知道你需要分配 * returnSize = answerSize; int 不需要 '\0'以上是关于它不适用于leetcode,但它适用于vscode——一个数组问题的主要内容,如果未能解决你的问题,请参考以下文章
AJAX 不适用于移动设备,但它适用于 Chrome 开发者工具
VSCode 中的 Flutter beta 热重载适用于 Web,但不适用于 iOS 和 Android(适用于 Android Studio)
此 JS/jQuery 代码适用于 Firefox,但不适用于 Chrome