题目描述:
个人题解:
可以先枚举出数组中的每一个数x ,寻找数组中是否存在 (target - x),当我们使用遍历整个数组的方式寻找 (target - x) 时,需要注意到每一个位于 x 之前的元素都已经和 x 匹配过,因此不需要再进行匹配。而每一个元素不能被使用两次,所以我们只需要在 x 后面的元素中寻找 (target - x)。
代码实现:
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
for(int i = 0;i < numsSize;i++)
{
for(int j = i + 1;j < numsSize;j++)
{
if(nums[i] + nums[j] == target)
{
int* ret = malloc(sizeof(int) * 2);
ret[0] = i,ret[1] = j;
*returnSize = 2;
return ret;
}
}
}
*returnSize = 0;
return NULL;
}
复杂度分析:
时间复杂度:O(N2),其中 N 是数组中的元素数量。最坏情况下数组中任意两个数都要被匹配一次。
空间复杂度:O(1)。
标签:numsSize,target,int,复杂度,ret,枚举,数组,两数 From: https://blog.csdn.net/qq_45031559/article/details/140597078