求两数之和:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
for(int i = 0;i < numsSize;++i)
{
for(int j = i + 1;j < numsSize;++j)
{
if(nums[i] + nums[j] == target)
{
int * result = malloc(sizeof(int) * 2);
if(result == NULL){
*returnSize = 0;
return NULL;
}
result[0] = i;
result[1] = j;
*returnSize = 2;
return result;
}
}
}
*returnSize = 0;
return NULL;
}
思路:找两个数,用两层嵌套for循环遍历所有可能的组合。外层循环(i):遍历数组中每个元素,把当前元素 nums[i] 当作 第一个数,下标 i 作为第一个候选下标;内层循环(j):从 i+1开始遍历,把 nums【j]当作第二个数,确保每个组合只检查一次。对每一组 (i,j),计算 nums[i] + nums[j],判断是否等于target
重要知识点: 1.malloc函数:从 C 语言的"堆内存"中分配指定字节数的空间,返回 void 类型指针
2.int* result:声明整型指针result,接收动态分配的内存地址;
3.if 条件判断:两层 if 判断(两数之和是否匹配目标值;动态内存分配是否成功)
4.return 语句:三种场景下的函数终止(内存分配失败;找到目标结果;无结果),提前或正常终止函数并返回对应值。