用c语言暴力枚举法实现two sums完整代码
时间: 2024-02-16 15:59:34 浏览: 122
Two Sum leetcode c++
以下是用C语言实现Two Sum问题的暴力枚举法的完整代码:
```c
#include <stdio.h>
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
int i, j;
int *result = (int*)malloc(2 * sizeof(int)); // 为结果数组分配内存
*returnSize = 2; // 设置结果数组大小为2
for(i = 0; i < numsSize - 1; i++) {
for(j = i + 1; j < numsSize; j++) {
if(nums[i] + nums[j] == target) {
result[0] = i;
result[1] = j;
return result; // 返回结果数组的指针
}
}
}
return NULL; // 没有找到符合要求的结果,返回 NULL
}
int main() {
int nums[] = {2, 7, 11, 15};
int target = 9;
int returnSize;
int *result = twoSum(nums, 4, target, &returnSize);
if(result != NULL) {
printf("[%d, %d]\n", result[0], result[1]);
free(result); // 释放结果数组的内存
} else {
printf("No result found.\n");
}
return 0;
}
```
该代码中的`twoSum`函数接受一个整数数组`nums`、数组大小`numsSize`、目标值`target`和一个指向结果数组大小的指针`returnSize`。该函数使用两个嵌套的循环来枚举所有可能的组合,如果找到符合要求的组合,则将结果存储在一个动态分配的结果数组中,并返回该数组的指针。如果没有找到符合要求的组合,则返回`NULL`。
在`main`函数中,我们定义了一个整数数组`nums`、目标值`target`和一个返回结果数组大小的变量`returnSize`。我们调用`twoSum`函数来解决Two Sum问题,并将结果存储在一个名为`result`的指针中。最后,我们检查`result`是否为`NULL`,如果是,则打印一条消息表示未找到符合要求的结果;否则,我们打印结果数组的值,并释放结果数组的内存。
阅读全文