以最后一个元素开始,若有进位则保存到curr上并对原数据上加1,并定义一个新的数组。若没有进位则正常返回。
int* plusOne(int* digits, int digitsSize, int* returnSize){ *returnSize = digitsSize; int i = 0; int curr = 1; for(i = digitsSize-1; i >= 0; i--){ curr = (digits[i]+curr)/10; if(curr == 0){ digits[i] += 1; break; } else{ digits[i] = 0; } } if(curr != 0){ int *result = (int *)malloc((digitsSize+1)*sizeof(int)); for(i = digitsSize-1; i >= 0; i--){ result[i+1] = digits[i]; } result[0] = curr; *returnSize = digitsSize+1; return result; } else{ return digits; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)