给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/plus-one
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目比较简单,没什么好讲讲解的。
只是稍微注意下
[9,9,9] ---->[1,0,0,0] 需要扩展位数
[1,9,9]----->[2,0,0] 不需要扩展位数的进位这两种情况
class Solution {
public int[] plusOne(int[] digits) {
//不需要进位的情况,尾数+1返回
if (digits[digits.length-1]<9){
digits[digits.length-1] += 1;
return digits;
}
//需要进位的情况
int tempLength = digits.length;
//声明个数组来存储数据,
int[] temp = new int[tempLength+1];
//初始化temp
System.arraycopy(digits, 0, temp, 1, tempLength );
for (int i = tempLength;i>=0; i--){
temp[i]+=1;
//不需要进位直接退出循环,
if (temp[i] < 10){
break;
}
//进位
temp[i] = 0;
}
//如果temp首位为零,则不是999这种情况的数据,位数没有扩大
if (temp[0] == 0){
System.arraycopy(temp,1,digits,0,tempLength);
return digits;
}
//首位不为0,说明进位了,返回temp
return temp;
}
}