第一次在力扣提交代码,对这个系统还不是很熟悉,看到第一题,一开始没看代码 运行的输入用例,只看了题目的输入用例,以为就输入一行字符串,蓝桥杯写多了,以为处理输入也是题目的一部分。
#include<stdio.h>
#include<string.h>
int main()
{
char str[200];
int nums[100],target,i,j,temp=0,k=0;
gets(str);
for(i=0;i<strlen(str);i++){
if(str[i]>='1'&&str[i]<='9'){
temp=temp*10+(str[i]-'0');
}
if(str[i]==','){
nums[k++]=temp;
temp=0;
}
}
target=str[i-1]-'0';
for(i=0;i<k;i++){
for(j=i+1;j<k;j++){
if(nums[i]+nums[j]==target){
printf("[%d,%d]",i,j);
}
}
}
return 0;
}
写完直接把基础代码用例一覆盖,运行直接编译失败,傻了,然后恢复用例,把main函数代码粘贴到twoSum中,一运行还是报错,原来输入是在主函数里面的。不需要自己写。返回一个array数组,数组中元素数量赋值returnSize。
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
int *array;
array=(int *)malloc(5*sizeof(int));
int i,j;
for(i=0;i<numsSize;i++){
for(j=i+1;j<numsSize;j++){
if(nums[i]+nums[j]==target){
array[0]=i;
array[1]=j;
break;
}
}
}
*returnSize = 2;
return array;
}
不过没有优化,单纯的跑是O(n2),肯定有优化的算法。没有去想了,在接着做做吧,等熟悉了系统,有空在回来优化。