トピックの分析
| 空でない整数の配列で表された負でない整数が与えられたとき、その数に1を足します。 | 
一番大きい桁が配列の一番上に格納され、配列の各要素には 1 桁だけが格納されます。整数 0 以外は、0 から始まることはないと考えてよいでしょう。
例1.
 : [1,2,3]
 : [1,2,4]
 : 123という数を表す配列を入力せよ.
例2.
 : [4,3,2,1]
 : [4,3,2,2]
 : 4321という数を表す配列を入力せよ.
トピックの分析
問題によると、プラス1が必要です!そう、プラス1は重要。なぜなら、プラス1だけで、2つの状況が考慮されるからです:
- 普通の場合は、9以外の数字に1を足します。 
- 特別なケース,9+1. 
そのため、この2つの操作をモデル化するだけで、スムーズに解答を導くことができます!
トピックを図解しています。
想定される数字【1,9,9
おそらく次のようなものでしょう:
もちろん、ここでは特殊なケースを考慮する必要があり、99、または999と同様に、配列をスプライスする必要があります。具体的には、次の図のようになります:
以上の分析を通して、最後はコードに変換するだけです!プラス1 "は見た目ほど単純ではないような気がしませんか?
GO言語の例
以上の分析に基づき、次のような解が得られます:
func plusOne(digits []int) []int {
 var result []int
 addon := 0
 for i := len(digits) - 1;i >= 0; i-- {
 digits[i]+=addon
 addon = 0
 if i == len(digits) - 1 {
 digits[i]++
 }
 if digits[i] == 10 {
 addon = 1
 digits[i] = digits[i] % 10
 }
 }
 if addon == 1 {
 result = make([]int, 1)
 result[0] = 1
 result = append(result,digits...)
 }else{
 result = digits
 }
 return result
}
ヒント
append(a,b...) スライスbの要素をaに加える。
私が書いたすべての解答と各問題の完全な図解をeBookにまとめました。





