我的代码(c语言版)
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
int len,i,j;
len=sizeof(nums);
for(i=0;i<len;i++){
for(j=0;j<len;j++){
if(nums[i]+nums[j]==target){
return [i,j];
}
}
}
}
提交没有通过,仔细看了一下所给的接口,返回值是int*,经修改
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
int len,i,j;
int *result=NULL;
len=sizeof(nums);
for(i=0;i<len;i++){
for(j=i+1;j<len;j++){
//为什么j=i+1?
//是因为先遍历nums[i],每一个元素不能被使用两次,不用再从0开始了
if(nums[i]+nums[j]==target){
result=(int *)malloc(sizeof(int)*2);
/*注:malloc是c语言中的动态分配内存,result=(int *)malloc(sizeof(int)*2),
malloc函数返回的是void/*型,所以要强制类型转换成int,在前面加上(int *),
才能给整型赋值,后面(sizeof(int)*2)是分配两个int大小的空间
*/
result[0]=i;
result[1]=j;
return result;
}
}
}
return result;
}