LeetCode 第一题:两数之和 - 代码优化与解析
对于 LeetCode 第一题,我们需要将 'twoSum' 函数的定义放在主函数之前,并且不需要在 'main' 函数中调用 'twoSum' 函数。以下是修正后的代码:
#include <stdio.h>
#include <stdlib.h>
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
for (int i = 0; i < numsSize; i++) {
for (int j = i + 1; j < numsSize; j++) {
if (nums[i] + nums[j] == target) {
*returnSize = 2;
int* result = (int*)malloc(*returnSize * sizeof(int));
result[0] = i;
result[1] = j;
return result;
}
}
}
*returnSize = 0;
return NULL;
}
int main() {
int nums[4] = { 2, 7, 11, 15 };
int target = 9;
int returnSize;
int* result = twoSum(nums, 4, target, &returnSize);
for (int i = 0; i < returnSize; i++) {
printf("%d ", result[i]);
}
free(result);
return 0;
}
在这个修正后的代码中,我们将 'twoSum' 函数的定义放在了主函数 'main' 之前。这样,我们就可以在 'main' 函数中直接调用 'twoSum' 函数,计算并打印结果。
在 'main' 函数中,我们创建了一个整数数组 'nums',一个目标值 'target',以及一个整数变量 'returnSize' 来存储结果数组的大小。然后,我们调用了 'twoSum' 函数,将数组 'nums'、数组大小 '4'、目标值 '9' 以及 'returnSize' 的地址作为参数传递给函数。最后,我们打印出结果数组,并使用 'free' 函数释放了动态分配的内存。
这段修正后的代码应该能够顺利通过 LeetCode 第一题的审查,并得到正确的结果。
非常抱歉给你带来了困惑,并感谢你的耐心。如果还有其他问题,请随时提问。
原文地址: https://www.cveoy.top/t/topic/biMx 著作权归作者所有。请勿转载和采集!