该数组中找出和为目标值的两个整数,并返回他们的数组下标,用C语言编译
时间: 2024-10-09 19:16:10 浏览: 38
在C语言中,要解决这个问题,可以使用哈希表(如`unordered_map`或`std::map`)或者双指针技巧。这里是一个简单的示例,使用双指针法:
```c
#include <stdio.h>
// 定义函数,输入数组和目标值,返回一个包含两个元素的数组表示结果,如果无解则返回空数组
int* findTwoInts(int arr[], int target, int n) {
// 创建一个空的结果数组
int result[2] = { -1, -1 };
// 使用两遍遍历数组
for (int i = 0; i < n; ++i) {
// 第二个指针从i+1开始,寻找第一个数的补数
for (int j = i + 1; j < n; ++j) {
// 如果找到的和等于目标值,更新结果并跳出循环
if (arr[i] + arr[j] == target) {
result[0] = i;
result[1] = j;
return result;
}
}
}
// 没有找到符合条件的组合,返回空数组
return NULL;
}
int main() {
int arr[] = {2, 7, 11, 15};
int target = 9;
int n = sizeof(arr) / sizeof(arr[0]);
int* indices = findTwoInts(arr, target, n);
if (indices) {
printf("找到了数组下标 %d 和 %d\n", indices[0], indices[1]);
} else {
printf("没有找到满足条件的两个整数\n");
}
return 0;
}
```
在这个例子中,我们首先初始化结果数组为`{-1, -1}`,然后用两个指针分别遍历数组,检查它们的和是否为目标值。如果找到,就立即返回这两个下标;如果没有找到,则返回NULL。
阅读全文