在数组中找出和为目标值两个整数 用c语言实现
时间: 2023-05-27 12:01:05 浏览: 54
以下是一种基于暴力枚举的解法,时间复杂度为O(n^2):
```
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
int* res = (int*)malloc(sizeof(int) * 2);
*returnSize = 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;
}
```
首先,我们遍历每个数组元素,以每个元素为基准,再一次遍历整个数组,查找是否有另一个元素的值与当前元素值之和等于目标值。如果有,即可得到这两个数的下标,返回结果即可。
需要注意的是,在返回结果前,需要动态分配一个两个元素的数组来存放结果,同时通过returnSize参数返回结果数组的长度(即2)。如果找不到满足条件的数,则返回NULL。
相关问题
在数组中找出和为目标值两个整数用c语言实现
#include <stdio.h>
int main() {
int target, n;
printf("Enter the target sum: ");
scanf("%d", &target);
printf("Enter the number of integers in the array: ");
scanf("%d", &n);
int arr[n];
printf("Enter the integers in the array:\n");
for(int i=0;i<n;i++) {
scanf("%d",&arr[i]);
}
for(int i=0;i<n;i++) {
for(int j=i+1;j<n;j++) {
if(arr[i]+arr[j]==target) {
printf("%d + %d = %d\n", arr[i], arr[j], target);
return 0;
}
}
}
printf("There are no two integers in the array that add up to %d\n", target);
return 0;
}
一个整数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 targ c语言
以下是C语言实现找出和为目标值的两个整数的代码:
```c
#include <stdio.h>
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
static int result[2];
for(int i=0; i<numsSize-1; i++){
for(int j=i+1; j<numsSize; j++){
if(nums[i]+nums[j] == target){
result[0] = i;
result[1] = j;
*returnSize = 2;
return result;
}
}
}
*returnSize = 0;
return NULL;
}
int main(){
int nums[] = {2, 7, 11, 15};
int target = 9;
int returnSize;
int* result = twoSum(nums, 4, target, &returnSize);
if(returnSize == 2){
printf("[%d, %d]\n", result[0], result[1]); // 输出:[0, 1]
}
return 0;
}
```