我c语言和数据结构都不熟,最近在刷leetcode,这个程序自己手推好像没有错,不知道错在哪里了,如果直接看别人的代码写,感觉就永远不会知道我这么写的问题在哪,所以上来问问大lao们
这是问题和我写的代码
int* plusOne(int* digits, int digitsSize, int* returnSize){
int flag=1,loc=digitsSize-1; //flag是进位,因为加一,所以初始值为1,loc是从后向前的下标
if(digits[0]==0){ //如果数组是0,就直接返回1
returnSize=(int *)malloc(sizeof(int));
returnSize[0]=1;
}
else{
while(loc>-1){
digits[loc]=digits[loc]+flag;
flag=digits[loc]/10;
digits[loc]=digits[loc]%10;
loc--;
}
if(flag>0){
digitsSize++;
returnSize=(int *)malloc(sizeof(int)*digitsSize);
returnSize[0]=flag;
for(int j=1;j<digitsSize;j++)returnSize[j]=digits[j-1];
}
else{ //如果算到最大一位还有进位,就得全体先后挪,然后进1
returnSize=(int *)malloc(sizeof(int)*digitsSize);
for(int j=0;j<digitsSize;j++)returnSize[j]=digits[j];
}
}
return returnSize;
}
麻烦大家帮我看看.万分谢谢