这一题第一遍没看懂啥意思,后来自己做提交了好多次才通过。。
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。
输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。
输入:digits = [0]
输出:[1]
大概意思就是数组最后一位小于9直接加一,而正好是9,加一后满10进一位,这时分两种情况
第一种:数组除了最后一位,剩下的位数上数字不超过9,这时数组的长度不需要改变
第二组:数组位数上都是9,这时数组的长度需要加一,比如:99999,加一以后100000
理解了以后是不是很简单!
接下来就是实现过程:
class Solution {
public int[] plusOne(int[] digits) {
for(int i = digits.length -1;i >= 0; i-- ){ // 从后往前遍历
if(digits[i] != 9){
digits[i]++;
return digits;
}else{
digits[i] = 0;
}
}
// 通过以上循环,确定满足第二种情况,数组长度改变,最高位设为1
int [] arr = new int[digits.length + 1] ;
arr[0] = 1;
return arr;
}
}
理解万岁!