leetcode两数之和(萌新的lc探索日记)

第一次做leetcode。。。 原来这个*Note: The returned array must be malloced, assume caller calls free().* 的意思是返回动态数组来表示输出结果,而且不需要在函数内free。
原来c是可以通过返回对应函数类型指针的方式返回数组的诶୧(๑•̀◡•́๑)૭具体方式大概是:
int* example(int n){//传入数组大小
	int *arr;
	if(n<=0) return ERROR;//#defien ERROR -1
	arr=(int*)malloc(sizeof(int)*n);//分配内存
	return arr;//返回得到的整型数组的指针
}

我的题解:暴力解法

int* twoSum(int* nums, int numsSize, int target, int* returnSize){
    int *res,i,j;
    res=(int*)malloc(sizeof(int)*2);
    *returnSize=0;
    for(i=0;i<numsSize-1;i++){
		for(j=i+1;j<numsSize;j++){
			if(nums[i]+nums[j]==target){
                res[0]=i;
                res[1]=j;
				*returnSize=2;
				return res;
			}
		}
	}
	return 0;//未找到满足条件的两个数 
}//时间复杂度O(n^2) 执行用时 : 260 ms 

无关紧要的main函数:

int main(void){
	int num[4]={2,7,11,13},*e,tar,size;
	int i;
	scanf("%d",&tar);
	e=twoSum(num,4,tar,&size);
	printf("[");
	for(i=0;i<size;i++)
		printf("%d,",e[i]);
	printf("\b]");//通过\b退格以后再输出,用]覆盖最后输出的一个逗号 
	return 0;
}

为了达到与题目相同的输出效果,使用了一个退格符“\b”,蛮有意思的。注意这个符号只是向前移动光标,需要再输入内容来达到删除的目的
吐槽:不同于大部分oj的解题方式,leetcode只需要给出函数就可以呢。。。看题解还有更简单的方法(哈希表)。去补

发布了24 篇原创文章 · 获赞 10 · 访问量 5000

猜你喜欢

转载自blog.csdn.net/weixin_44559752/article/details/102807647
今日推荐