之前从来没用过力扣,常用的是DEV,所以刚开始挺不适应的,但是不适应也要适应,毕竟以后要是做工程创建函数是必不可少的。
这里写一下关于为什么第一题有人用static int 的原因吧。
static int :属于整个类,即使没有任何对象创建,类的静态数据成员变量也存在。
int属于类的一个具体的对象,只有对象被创建了,普通数据成员才会被分配内存。
这里学习过C++的应该会有印象,如果看不懂的话,可以学习一下关于C++中类及其类对象的内容,学完就会很容易理解
1.使用static int
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
*returnSize=2;
static int a[2]={0};
for(int i=0;i<numsSize-1;i++){
for(int j=i+1;j<numsSize;j++){
if(nums[i]+nums[j]==target){
a[0]=i;
a[1]=j;
return a;
}
}
}
return 0;
}
2.不使用static int而使用int并用malloc开辟空间
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
int*a=(int*)malloc(sizeof(int)*2);
*returnSize=2;
for(int i=0;i<numsSize-1;i++) {
for(int j=i+1;j<numsSize;j++) {
if(nums[i]+nums[j]==target) {
a[0]=i;
a[1]=j;
return a;
}
}
}
return a;
}
还有一点是,参考其他人的相关解题步骤,*returnSize应该就是返回的数组的长度,相应的设置为2即可。