⭐一、两数之和
题目描述:两数之和

解题思路:
- 先创建一个动态分配的数组 ret,用于存储结果,其大小为 numbersLen。
- 使用一个外层循环遍历数组 numbers,循环变量 i 从 0 到 numbersLen - 1。如果当前值大于目标值,则跳过当前循环。
- 对于每个 i,使用一个内层循环从 i + 1 到 numbersLen - 1,循环变量 j 用于查找与 numbers[i] 相加等于 target 的另一个数字。
- 若 sum 等于目标值 target,则找到了满足条件的两个数字。将下标 i 和下标 j 分别 +1 存储到 ret 数组中(题目要求下标从 1 开始)。
- 设置 returnSize 为 2,表示返回数组的大小,最后返回目标数组 ret。若遍历完数组都没找到满足条件的两个数字,则返回 0。
代码实现:
int* twoSum(int* numbers, int numbersLen, int target, int* returnSize) {
// write code here
int* ret = (int*)malloc(sizeof(int) * numbersLen);
for (int i = 0; i < numbersLen; i++) {
if (numbers[i] > target) {
continue;
}
for (int j = i + 1; j < numbersLen; j++) {
int sum = numbers[i] + numbers[j];
if (sum == target) {
ret[0] = i + 1;
ret[1] = j + 1;
*returnSize = 2;
return ret;
}
}
}
return 0;
}






