一.. 加一 - 力扣(LeetCode)
这题考虑的麻烦点就在于每位都进位,最后进位扩展一位,此时就要另开空间,用来进位。
其他的情况利用循环从后面往前面走,每一位都判断一下是否变成十,只要变成十,就进位。
这个循环写出来就包含了很多情况,但当要完成数组扩增时的情况就要重新考虑了
int* plusOne(int* digits, int digitsSize, int* returnSize) {for(int i=digitsSize-1;i>=0;--i){digits[i]+=1;if(digits[i]!=10){*returnSize=digitsSize;return digits;}if(digits[i]==10){digits[i]=0; }}int* new=(int*)malloc(sizeof(int)*(digitsSize+1));memset(new,0,sizeof(int)*(digitsSize+1));new[0]=1;*returnSize=digitsSize+1;return new;
}
下面不是循环的就是考虑的那种扩容的情况例如999,那么新开一个数组,并且Size要比原数组
的大小多一,这里直接用memset函数将数组初始化,然后将数组的首元素调整1,这种就是针对
999,9999的情况。