C语言实现两数之和的三种算法实验完整代码
时间: 2024-03-03 18:50:04 浏览: 32
好的,下面是C语言实现两数之和的三种算法的完整代码:
```c
#include <stdio.h>
// 暴力枚举法
int* twoSum1(int* nums, int numsSize, int target) {
static int res[2];
for (int i = 0; i < numsSize; i++) {
for (int j = i + 1; j < numsSize; j++) {
if (nums[i] + nums[j] == target) {
res[0] = i;
res[1] = j;
return res;
}
}
}
return NULL;
}
// 哈希表法
int* twoSum2(int* nums, int numsSize, int target) {
static int res[2];
int map[100000] = {0};
for (int i = 0; i < numsSize; i++) {
int complement = target - nums[i];
if (map[complement] != 0) {
res[0] = map[complement] - 1;
res[1] = i;
return res;
}
map[nums[i]] = i + 1;
}
return NULL;
}
// 双指针法
int* twoSum3(int* nums, int numsSize, int target) {
static int res[2];
int left = 0, right = numsSize - 1;
while (left < right) {
int sum = nums[left] + nums[right];
if (sum == target) {
res[0] = left;
res[1] = right;
return res;
} else if (sum < target) {
left++;
} else {
right--;
}
}
return NULL;
}
int main() {
int nums[4] = {2, 7, 11, 15};
int target = 9;
// 暴力枚举法
int* res1 = twoSum1(nums, 4, target);
printf("暴力枚举法结果: [%d, %d]\n", res1[0], res1[1]);
// 哈希表法
int* res2 = twoSum2(nums, 4, target);
printf("哈希表法结果: [%d, %d]\n", res2[0], res2[1]);
// 双指针法
int* res3 = twoSum3(nums, 4, target);
printf("双指针法结果: [%d, %d]\n", res3[0], res3[1]);
return 0;
}
```
这个程序先定义了三个函数`twoSum1()`、`twoSum2()`、`twoSum3()`,分别实现了暴力枚举法、哈希表法、双指针法三种算法。在`main()`函数中,我们定义了一个长度为4的数组`nums`和一个目标值`target`,然后分别调用三种函数,输出它们的结果。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)