package main
import"fmt"//设计算法://99->1,0,0 999->1,0,0,0//从后往前遍历数组,如果末尾的数字为9,赋值为0,负责++//如果首端的数字为0,插入[]int{1}至最前端funcplusOne(digits []int)[]int{
n :=len(digits)for i := n -1; i >=0; i--{if digits[i]==9{
digits[i]=0}else{
digits[i]++return digits
}}
fmt.Println(digits)if digits[0]==0{
digits =append([]int{1}, digits...)}
fmt.Println(digits)return digits
}//方法2://直接对每个索引上的数字进行处理//如果最后一位为9,9+1后为10,通过10%10=0重新赋值给这个数//然后进行n-1位数处理,重复上一步骤funcplusOne2(digits []int)[]int{
n :=len(digits)
index :=1for i := n -1; i >=0; i--{
sum := digits[i]+ index //确定每一位数字的值
value := sum %10//逢10归0,负责保持原数字
index = sum /10//如果大于等于10,则为1;否则为0
digits[i]= value
}if index ==1{//说明数组最前端是个10,但是1未放入数组
digits =append([]int{1},digits...)}return digits
}funcmain(){
d :=[]int{9,9}
fmt.Println(plusOne2(d))}