代碼如下: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;}運行的時候出不來結果啊,請問這是為什么,我該怎么改呢?
1 回答
波斯汪
TA貢獻1811條經驗 獲得超4個贊
不考慮你程序本身的對錯,僅僅從輸入輸出的角度來說,你返回的是結果數組的指針,而returnsize的作用是返回,告知調用者結果數組的大小
/* 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 = 2;
int * r = new int[2];
r[0]=i+1;
r[1]=j+1;
return r;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[] = {2,7,15,9};
int t = 9;
int rs;
int * r = twoSum(a, 4, t, &rs);
for (int i = 0; i < rs; i++)
printf("%d ", r[i]);
return 0;
}應該是這么一個邏輯
- 1 回答
- 0 關注
- 2373 瀏覽
添加回答
舉報
0/150
提交
取消
