题目描述
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
题目思路:分好类就行
题目代码:
package leetcode.easy.week01;
public class problem66 {
public int[] plusOne(int[] digits) {
//以0开头
if(digits[0]==0){
digits[0]=1;
return digits;
}
//不是以0开头 最后一位也不是9
if(digits[digits.length-1]!=9){
digits[digits.length-1]=digits[digits.length-1]+1;
return digits;
}
//每一位都是9
for(int b=0;b<digits.length;b++){
if(digits[b] !=9){
break;
}
if(b==digits.length-1){
//到此说明每一位都是9
int[] result=new int[digits.length+1];
for(int c=0;c<result.length;c++){
if(c==0){
result[c]=1;
}else{
result[c]=0;
}
}
return result;
}
}
//不是以0开头 最后一位是9 但不是其它每位都是9也就是返回的数组长度不变
if(digits[digits.length-1]==9){
for(int a=digits.length-1;a>-1;a--){
if(digits[a]!=9){
digits[a]=digits[a]+1;
break;
}else{
digits[a]=0;
}
}
}
return digits;
}
public static void main(String[] args) {
problem66 pro=new problem66();
int[] ints = pro.plusOne(new int[]{8,9,9,9});
}
}