输入一个含10个整数的数组以及一个目标整数,在数组中找到两个数使它们的和等于目标整数,返回这两个数在数组中的索引 用C语言且不用哈希表
时间: 2024-09-13 08:10:22 浏览: 38
在C语言中,你可以使用两层循环的方式来解决这个问题,这种方法通常被称为“双指针”或者“两数之和”。假设数组名为arr,长度为10,目标整数为target。以下是实现的一个示例:
```c
#include <stdio.h>
// 函数声明
int findTwoSum(int arr[], int target, int n) {
// 遍历数组中的每个元素
for (int i = 0; i < n - 1; i++) {
// 使用一个固定值作为第二个数的候选,初始值设为第一个数的下一个位置
int complement = target - arr[i];
// 内层循环从i+1开始,寻找和complement相等的数
for (int j = i + 1; j < n; j++) {
if (arr[j] == complement) {
return i + 1, j; // 返回两个数的索引
}
}
}
// 如果没有找到符合条件的组合,返回-1表示未找到
return -1;
}
int main() {
int arr[] = {2, 7, 11, 15, 3, 9, 4, 8, 6, 1}; // 一个包含10个整数的数组
int target = 13; // 目标和
int result[2]; // 存储结果的数组
result[0] = findTwoSum(arr, target, sizeof(arr) / sizeof(arr[0]));
if (result[0] != -1) {
printf("两个数的索引分别为: %d 和 %d\n", result[0], result[1]);
} else {
printf("没有找到和为目标的两个数.\n");
}
return 0;
}
```