欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-14 17:29:08
...

题目描述:

给定一个整数数组 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); 以后想到好的写法再来补充。

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