package com.example.demo.leecode;
import java.util.Arrays;
/**
 * 题目: 数组+1
 * @Date 2020/11/24
 * @author Tang
 *
 * 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
 *
 * 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
 *
 * 你可以假设除了整数 0 之外,这个整数不会以零开头。
 *
 */
public class IncrementArray {
    Integer[] array;
    int index;
    public void init(Integer[] array){
        this.array = array;
        if(array == null || array.length <= 0){
            return;
        }
        index = array.length - 1;
        execute();
        System.out.println(this.array.length);
        System.out.println(Arrays.toString(this.array));
    }
    /**
     * 执行+1操作
     */
    private void execute(){
        if(index == -1){
            Integer[] newArray = new Integer[array.length+1];
            newArray[0] = 1;
            for (int i = 0; i < array.length; i++){
                newArray[i+1] = array[i];
            }
            this.array = newArray;
            return;
        }
        if(array[index] == 9){
            array[index] = 0;
            index--;
            execute();
        }else{
            array[index]++;
        }
    }
    public static void main(String[] args) {
        Integer[] array ={8,9,9,9,9};
        IncrementArray IncrementArray = new IncrementArray();
        IncrementArray.init(array);
    }
}