力扣第一题-两数之和

问题描述如下:

img


问题很简单,但是后边跟着的提示有点不懂,这一段是什么意思呀,为什么又只有一组有效答案呢

img

提示中前三个是变量的范围,也就是系统调用接口的时候给的参数只会在这个范围内。
最后一行的意思就是,例如[1,2,3,-1,-2],如果求和为1的结果则会有 两组答案[2,-1],[3,-2],题目中是不会存在这样的情况,只会有一组符合最终答案


#include <stdio.h>
#include <stdlib.h>

int *twosum(int *nums, int numSize, int target, int* returnSize)
{
    int i, j;
    int *ret = &target;
    for (i = 0; i < numSize; i++)  {
        for (j = i; j < numSize; j++) {
            if (target == (nums[i] + nums[j])) {
                returnSize[0] = i;
                returnSize[1] = j;
                return ret;
            }
        }
    }
    if (i == j) {
        returnSize[0] = -1;
        returnSize[1] = -1;
        printf("No Match for the target\n");
    }
    return ret;
}
 
int main(int argc, char *argv[])
{
    int nums[] = {2,7,11,15};
    int returnSize[2] = {0};
    int *ret = twosum(nums, sizeof(nums), 18, returnSize);
    printf("target: %d, return size: [%d, %d]\n", *ret, returnSize[0], returnSize[1]);
    return 0;
}

有帮助的话采纳一下哦!