执行代码及结果:
思路:
该题数组末位加一输出结果应该考虑三种情况:
1. 当数组末位不为9时,数组末位元素+1直接输出
2.当只有数组末位元素为9而前一位元素不为9时,它会向前一位进一位,末位元素归0,前一位元素加一
3.当所有元素都为9时数组长度+1,首位元素为1,其他元素为0.
总代吗:
import java.util.Scanner;
class Solution {
public int[] plusOne(int[] digits) {
for(int i=digits.length-1;i>=0;i--)
{
digits[i]=digits[i]+1;
// 注意 if(digits[i]%10!=0)return digits;写法是错误的
digits[i]=digits[i]%10;
//如果末位元素不为9使用return结束循环直接返回末位元素加1的数组,所以执行下一次循环说明原数组前一个元素为9
if(digits[i]!=0)return digits;
//如果第一次循环后没有退出循环说明末位元素为9,此后依次对前一个元素+1求余判断是否超过0
}
//如果for循环都遍历完了说明数组中所有元素都是9,此时创建一个长度比原来数组长度多一的数组,首位为1,其余为0
digits=new int[digits.length+1];
digits[0]=1;
return digits;
}
public static void main(String []args) {
int []digits=new int[100];
@SuppressWarnings("resource")
Scanner input=new Scanner(System.in);
String ar=input.nextLine().toString();
ar=ar.replace('[',' ');
ar=ar.replace(']',' ');
String[]arr=ar.split("\\s+");
for(int i=0;i<arr.length;i++) {
digits[i]=Integer.parseInt(arr[i]);
}
Solution a=new Solution();
System.out.println(a.plusOne(digits));
}
}