leetcode167两数之和c语言问题

代码如下:

  • Return an array of size *returnSize.

  • Note: The returned array must be malloced, assume caller calls free().
    /
    int
     twoSum(int* numbers, int numbersSize, int target, int* returnSize) {
    int i=0;
    int j=numbersSize-1;
    while(numbers[i]+numbers[j]!=target)
    {
    if(numbers[i]+numbers[j]>target)
    {
    j=j-1;
    }
    else
    {
    i=i+1;
    }
    }

    returnSize[0]=i+1;
    returnSize[1]=j+1;
    return returnSize;
    }

运行的时候出不来结果啊,请问这是为什么,我该怎么改呢?


米琪卡哇伊
浏览 2303回答 1
1回答

波斯汪

不考虑你程序本身的对错,仅仅从输入输出的角度来说,你返回的是结果数组的指针,而returnsize的作用是返回,告知调用者结果数组的大小&nbsp;/*&nbsp;Return&nbsp;an&nbsp;array&nbsp;of&nbsp;size&nbsp;*returnSize. &nbsp;*&nbsp;Note:&nbsp;The&nbsp;returned&nbsp;array&nbsp;must&nbsp;be&nbsp;malloced,&nbsp;assume&nbsp;caller&nbsp;calls&nbsp;free(). &nbsp;*/ int*&nbsp;twoSum(int*&nbsp;numbers,&nbsp;int&nbsp;numbersSize,&nbsp;int&nbsp;target,&nbsp;int&nbsp;*&nbsp;returnSize)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i=0; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;j=numbersSize-1; &nbsp;&nbsp;&nbsp;&nbsp;while(numbers[i]+numbers[j]!=target) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(numbers[i]+numbers[j]>target) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j-1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i=i+1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;*returnSize&nbsp;=&nbsp;2; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;*&nbsp;r&nbsp;=&nbsp;new&nbsp;int[2]; &nbsp;&nbsp;&nbsp;&nbsp;r[0]=i+1; &nbsp;&nbsp;&nbsp;&nbsp;r[1]=j+1; &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;r; } int&nbsp;_tmain(int&nbsp;argc,&nbsp;_TCHAR*&nbsp;argv[]) { &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;a[]&nbsp;=&nbsp;{2,7,15,9}; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;t&nbsp;=&nbsp;9; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;rs; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;*&nbsp;r&nbsp;=&nbsp;twoSum(a,&nbsp;4,&nbsp;t,&nbsp;&rs); &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;rs;&nbsp;i++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d&nbsp;",&nbsp;r[i]); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0; }应该是这么一个逻辑
打开App,查看更多内容
随时随地看视频慕课网APP