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两数之和的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 1两数之和

LeetCode——1.两数之和

LeetCode第5天 - 283. 移动零 | 167. 两数之和 II - 输入有序数组

LeetCode 两数之和 twoSum

LeetCode:两数之和

leetcode_01两数之和