[leetcode]問題解答と解説。 66. Plus One [JavaScript]
年末まで毎日leetcodeと向き合います。
今日のLeatCodeはこちら。
plusOne ルール
- 配列の要素は数値 number[]
- 最後の要素に1足して通常の数値に1を足したような配列にする。 number[]返す
- [9] -> [1, 0]
- [5,3,2] -> [5,3,3]
- [9, 9, 9] -> [1,0,0,0]
と説明した方がわかりやすい
plusOne 問題ページ
plusOne 解答 一例
己の恥ずかしいコード
function plusOne(digits) {
// let right = digits.length;
// let left = digits.length - 1
// plusOne([...digits.slice(i, 0))
// while(right left) ここで考えが止まる
// なんか変だ
};
やりたかったことは2pointerで桁数を足しながら移動していくのかなと
考えたが、きつくて制限時間終了
999とかだと再帰しなくてはならない??
等、
function plusOne(digits) {
for(var i = digits.length - 1; i >= 0; i--){
if(++digits[i] > 9) digits[i] = 0; // ++digits[i] でその要素に1足してから評価している。最後10なら0にする。
else return digits; // ここでは既に足した状態。返しているだけ
}
digits.unshift(1);
return digits;
};
plusOneをやってみて感想
なるほどな、
++digits[i]
ここが、配列の中の数値それ自体をインクリメントしている[9, 9, 9,]
の時は最後にunshiftで1を先頭に追加して、それ以外はreturn
単純だけれど、++digits[i]
が全て