トピックの分析
| 空でない整数の配列で表された負でない整数が与えられたとき、その数に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にまとめました。





