leetcode-加一
加一
给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
最开始想法:**超出int范围了
class Solution {
public int[] plusOne(int[] digits) {//129
int count = digits.length;//3
int num = 0;
for(int i = 0; i<count ;i++){
//
num = num +digits[i](int)Math.pow(10,count-i-1);
}
num = num+1;//130
String s = String.valueOf(num);
int count1 = s.length();//3
int[]array = new int[count1];
// array[1] = num;
for(int j = 0;j<count1;j++){
// 130/100 = 1...30
int a = num/(int)Math.pow(10,count1-j-1);
num = num%(int)Math.pow(10,count1-j-1);
array[j] = a;
}
return array;
}
}
网上解法:
class Solution {
public int[] plusOne(int[] digits) {//129
if (digits.length == 0) return digits;
int carry = 1, n = digits.length;
for (int i = digits.length - 1; i >= 0; --i) {
if (carry == 0) return digits;
int sum = digits[i] + carry;
digits[i] = sum % 10;
carry = sum / 10;
}
int[] res = new int[n + 1];
res[0] = 1;
return carry == 0 ? digits : res;
}
}