学习时间:
2023年1月18日
题目描述:
题解分享:
// 作 者 : 繁 华 倾 夏
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h> // 调用malloc函数
// 力扣(LeetCode):1.两数之和
// nums:数组 numsSize:数组长度 target:目标值 returnSize:新数组长度
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
int n1 = 0, n2 = 0;
while (n1 < numsSize) { // 采用双重遍历数组
n2 = n1 + 1; // n2永远比n1多1
while (n2 < numsSize) {
if ((nums[n1] + nums[n2]) == target) { // 判断两数和是否与目标值相等
int* re = (int*)malloc(sizeof(int) * 2); // 申请动态空间动态数
re[0] = n1;
re[1] = n2;
*returnSize = 2; // 必须要返回新数组长度,因为测试用例传的是整型
return re; // 笔者刚开始以为是数组,所以测试用例一直不通过
}
n2++;
}
n1++;
}
*returnSize = 0; // 如果双重循环没找到,则返回数组长度为0
return NULL; // 内容为空
}
// 测试用例
// 输入 nums = [2, 7, 11, 15], target = 9
// 输出 [0, 1]
int main() {
int nums[] = {2,7,11,15};
int target = 9;
int returnSize;
int numsSize = sizeof(nums) / sizeof(nums[0]); // 统计数组长度
int* re = twoSum(nums, numsSize, target, &returnSize);
for (int i = 0; i < returnSize; i++) {
printf("%d ", re[i]);
}
return 0;
}
【繁华倾夏】【每日力扣题解分享】【Day4】