LeetCode 1两数之和
Posted Suk_god
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 1两数之和相关的知识,希望对你有一定的参考价值。
两数之和
要求
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
分析
暴力循环:针对于此题来说,循环遍历整个数组,让数组中的元素相加,与target进行比较,若相等,返回数组中两个元素对应的下标。有云返回值为一个以上的数据,所以采用数组传参的方式进行·。
我们将返回的下标值存储在ret[2]
数组当中。这样,我们就只需要返回数组的地址,之后输出数组中的数据即可!
代码实现
#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)
int TwoSum(int* arr, int arrlen, int target, int returnlen,int *ret)
{
for (int i = 0; i < arrlen; i++)
{
for (int j = i + 1; j < arrlen; j++)
{
if (arr[i] + arr[j] == target)
{
ret[0] = i;
ret[1] = j;
returnlen = 2;
return returnlen;
}
}
}
returnlen = 0;
return returnlen;
}
int main()
{
//求一个数组中两个数的和等于键入的target,
//若存在,返回下标值
/*测试用例
[2, 7, 11, 15]
9
[0, 1]*/
int arr[] = { 2, 7, 11, 15 };
int target = 9;
int len = sizeof(arr) / sizeof(arr[0]);
int returnlen = 0;
int ret[2] = { 0 };
int p = TwoSum(arr, len, target, returnlen,ret);
printf("[");
for (int i = 0; i < p; i++)
{
printf("%d ",ret[i]);
}
printf("]\\n");
system("pause");
return 0;
}
ps:奈何只会for+for,时间复杂度O(n²),后续补充其他方法。
以上是关于LeetCode 1两数之和的主要内容,如果未能解决你的问题,请参考以下文章