森田賢二のleetCodeの使い方、解説、解答を毎日更新しているキャラクター

[leetcode]問題解答と解説。 66. Plus One [JavaScript]

[leetcode]問題解答と解説。 66. Plus One [JavaScript]

森田賢二のleetCode
森田賢二のleetCode

年末まで毎日leetcodeと向き合います。
今日のLeatCodeはこちら。

plusOne ルール

  • 配列の要素は数値 number[]
  • 最後の要素に1足して通常の数値に1を足したような配列にする。 number[]返す
  • [9] -> [1, 0]
  • [5,3,2] -> [5,3,3]
  • [9, 9, 9] -> [1,0,0,0]

と説明した方がわかりやすい

plusOne 問題ページ

66. Plus One

plusOne 解答 一例

己の恥ずかしいコード

function plusOne(digits) {
    // let right = digits.length;
    // let left = digits.length - 1
    // plusOne([...digits.slice(i, 0))
    // while(right left) ここで考えが止まる

    // なんか変だ
};

やりたかったことは2pointerで桁数を足しながら移動していくのかなと
考えたが、きつくて制限時間終了
999とかだと再帰しなくてはならない??
等、

plusOne見本

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]が全て

カテゴリー leetCode