该数组中找出和为目标值的两个整数,并返回他们的数组下标,用C语言写
时间: 2024-10-09 07:15:21 浏览: 45
在C语言中,要解决这个问题,你可以使用哈希表(通常称为“散列表”)或者双指针法。这里提供一种简单的双指针法的解决方案:
```c
#include <stdio.h>
// 帮助函数用于查找目标值并返回下标对
int findTwoSum(int arr[], int target, int n) {
// 创建一个空集合 (无序)
int hash[10001] = {0};
for (int i = 0; i < n; i++) {
int complement = target - arr[i];
if (hash[complement] != 0) {
return hash[complement] + 1, i + 1;
}
hash[arr[i]] = i;
}
return -1; // 如果没有找到,返回-1
}
int main() {
int arr[] = {2, 7, 11, 15};
int target = 9;
int n = sizeof(arr) / sizeof(arr[0]);
int indices[2];
indices[0] = findTwoSum(arr, target, n);
if (indices[0] != -1) {
printf("找到了两个元素,它们的下标分别是 %d 和 %d\n", indices[0], indices[1]);
} else {
printf("找不到满足条件的两个元素组合。\n");
}
return 0;
}
```
这个程序会遍历数组,对于每个元素,检查目标值减去它的差是否已经在哈希表中存在。如果存在,就找到了一对和为目标值的数字及其对应的下标。如果没有找到,则返回-1表示未找到。
阅读全文