题目描述:
给定一个整数数组 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 · 访问量 2495 私信 关注