本题难度:
简单
本题思路:
主要分两种情况,分别是进位会使得整体数组长度加1,和没有进位或进位不会使得整体数组长度加1。
本题代码:
/*
作者:zouxuecheng
日期:2024-1-30
思路:主要分两种情况,分别是进位会使得整体数组长度加1,和没有进位或进位不会使得整体数组长度加1
*/
class Solution {
public int[] plusOne(int[] digits) {
int currentArrayLength = digits.length;
boolean flag = false;
for(int i = 0; i < currentArrayLength; i++){
if(digits[i] != 9){
flag = true;
break;
}
}
if(flag){
int carry = 1;
for(int i = currentArrayLength - 1; i >= 0; i--){
int temp = carry;
carry = (digits[i] + carry) / 10;
digits[i] = (digits[i] + temp) % 10;
if(carry == 0)
break;
}
}
else{
currentArrayLength++;
digits = Arrays.copyOf(digits, currentArrayLength);
for(int i = currentArrayLength - 1; i >= 0; i--){
digits[i] = 0;
if(i == 0)
digits[i] = 1;
}
}
return digits;
}
}
本题复杂度:
时间复杂度T(n)=O(n)
空间复杂度S(n)=O(1)——最坏情况是会产生新数组并覆盖旧数组,不过也只有一种情况(即9999999999……)会这样