力扣第 1 题:两数之和(C 语言实现)
方法一:暴力枚举
题目理解
返回的数组必须使用 malloc 分配,假设调用者会调用 free()。提交的代码中只需要分配内存,不需要释放。 函数参数说明:
*nums:数组首地址numsSize:数组长度target:目标加和值*returnSize:返回数组的长度(本题固定为 2)
内存分配
由于题目要求自行 malloc 获取内存,必不可少的一句代码如下:
int *list = (int *)malloc(2 * sizeof(int));
获取完内存后,list 可视为一段长度为 2 的数组首地址。
算法逻辑
使用嵌套两个 for 循环遍历数组所有成员,当找到满足条件的下标时返回。
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
int i, j;
int *list = (int *)malloc(2 * sizeof(int));
*returnSize = 2;
for (i = 0; i < numsSize; i++) {
for (j = i + 1; j < numsSize; j++) {
if (nums[i] + nums[j] == target) {
list[0] = i;
list[1] = j;
return list;
}
}
}
return list;
}


