#leetcode力扣中两数之和问题
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
#代码
int* twoSum(int* nums, int numsSize, int target, int* returnSize)
{
int i = 0;
while (i<numsSize-1)
{
for (int k = 1; k < numsSize; k++)
{
if (nums[i] + nums[i+k] == target)
{
if(returnSize)
{
returnSize='\0';
returnSize=(int)malloc(sizeof(int)*2);
returnSize[0]=i;
returnSize[1]=k;
printf("[%d,%d]",i,k);
return returnSize;
}
}
}
i++;
}
return returnSize;
}
打印正常显示[0,1],但是返回值为[]
/* 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;
}
看一下,这个可以