LeetCode每日一题——加1
题目要求:
给定一个表示 大整数 的整数数组 digits
,其中 digits[i]
是整数的第 i
位数字。这些数字按从左到右,从最高位到最低位排列。这个大整数不包含任何前导 0
。
将大整数加 1,并返回结果的数字数组。
示例 1:
输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表示数字 123。 加 1 后得到 123 + 1 = 124。 因此,结果应该是 [1,2,4]。
示例 2:
输入:digits = [4,3,2,1] 输出:[4,3,2,2] 解释:输入数组表示数字 4321。 加 1 后得到 4321 + 1 = 4322。 因此,结果应该是 [4,3,2,2]。
示例 3:
输入:digits = [9] 输出:[1,0] 解释:输入数组表示数字 9。 加 1 得到了 9 + 1 = 10。 因此,结果应该是 [1,0]。
代码实现:
int* plusOne(int* digits, int digitsSize, int* returnSize) {
//先判断最后一位是不是9
for(int i = (digitsSize-1); i >= 0; i--)
{
//如果最后一位不是9,就加1,然后返回数组
if(digits[i] != 9)
{
digits[i]++;
*returnSize = digitsSize;
return digits;
}
//如果是9,就让当前位是0
digits[i] = 0;
}
//如果所有位都是9,就扩大一位数组空间
int *result = (int *)malloc((digitsSize + 1)*sizeof(int));
*returnSize = (digitsSize + 1);
//不管是几位数,先让首位是0
result[0] = 1;
//让其他位置是0
for(int i = 1; i < *returnSize; i++)
{
result[i] = 0;
}
return result;
}
坚持编程,我一直在路上!