1.题目描述
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
2.解题思路
直接用暴力解法,两个循环,但是C语言需要注意一些点
3.代码
objectivec
int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
for(int i =0;i<numsSize;i++){
for(int j=i+1;j<numsSize;j++){
if(nums[i]+nums[j] ==target){//建立新数组
int* res = malloc(sizeof(int)*2);
res[0]=i;
res[1]=j;
*returnSize = 2;
return res;
}
}
}
*returnSize = 0;
return NULL;
}
4.代码剖析
int* res = malloc(sizeof(int)*2);
这一句在堆内存中建立了一个大小为2个int类型的空间,不会随着函数运行完后被销毁,其中,res是一个指针变量,存的是地址,具体来说是该数组res的首地址,*res是对该地址解引用,也就是该地址内的数据,同样也是数组第一个数据即res[0] = *res,*(res+0) = res[0],*(res+1) = res[1].
return res;
返回一个指针变量int*,表示返回一个数组的首地址,可以通过该地址对数组内所有的元素进行寻址,即*(res+i) = res[i]