LeetCode1、两数之和 (c语言实现)

题目描述:

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
leetcode 上给出处理函数故按题目所给函数形参书写

#include<stdio.h>
int* twoSum(int* nums, int numsSize, int target, int* returnSize);
int main()
{
	int arr[4] = {2,7,11,15};
	int len = sizeof(arr) / 4;
	int target;
	printf("请输入目标值:\n");
	scanf("%d",&target);
	int *returnsize;
	int *r =  twoSum(arr, len, target, returnsize);
	printf("[%d,", r[0]);
	printf("%d]", r[1]);
} 
int* twoSum(int* nums, int numsSize, int target, int *returnSize)
{
	//遍历数组找target 
	static int a[2] = {0};
	for(int i = 0; i < numsSize -1; i++)
	{
		for(int j = i + 1; j < numsSize; j++)
		{
			if(nums[i] + nums[j] == target)
			{
					a[0] = i;
					a[1] = j; 
					*returnSize = 2; //代表返回数组的大小 
					return a;
			}	
		}	
	}
	*returnSize = 0;
	return a;
} 

本人这种处理方式应该是最易想到的,简单暴力时间复杂度为O(n^2) ,空间复杂度为常数级O(1); 以后想到好的写法再来补充。

本人小白,只是借此记录下自己的学习历程,不足之处大家多多交流。

发布了9 篇原创文章 · 获赞 3 · 访问量 2497

猜你喜欢

转载自blog.csdn.net/mglcms/article/details/104605683
今日推荐