力扣每日一题——66.加一
题目描述
代码注释
#include<stdio.h>
#include<stdlib.h>
int* plusOne(int* digits, int digitsSize, int* returnSize){
//开辟新数组
int* result = (int*)malloc(sizeof(int)*(digitsSize+1));
//最高位进位的话改变数组长度
int k=digitsSize;
int i = k-1;
//非最高位+1情况
for( i = k-1;i>0;i--){
if(digits[i]!=9){
digits[i]+=1;
break;
}else{
digits[i]=0;
}
}
//最高位+1
if(i==0){
//最高位为9,则数组长度+1,最高位变为1,其余都为0
if(digits[0]==9){
result[0]=1;
for(int j = 1;j<=digitsSize;j++){
result[j]=0;
}
k++;
}else{
//最高位不为9,则最高位+1,其余变为0
result[0]=digits[0]+1;
for(int j = 1;j<digitsSize;j++){
result[j]=0;
}
}
}else{
//非最高位+1则直接copy数组以返回
for(int j=0;j<digitsSize;j++){
result[j]=digits[j];
}
}
//数组长度赋值
*returnSize = k;
return result;
}