2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WaffleAdvent Calendar 2024

Day 7

leetcode提出コードを見直す 70.Climbing Stairs

Last updated at Posted at 2024-12-08

leetcode提出コードを見直す

WaffleCollege2期生のhatoです
7日目を担当します!

JavaScriptを始めてから1年半ぐらい経ちます
1年前からleetcodeをぼちぼち取り組んでおり、昔の超初心者の自分が書いたコードを今見るとどのような感じか気になり、提出コードを見直すことにしました

#70. Climbing Stairs
You are climbing a staircase. It takes n steps to reach the top.
あなたは階段を昇っています。階段の1番上までにn段かかります
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
毎回、あなたは階段を1段または2段で昇ることができます いくつの異なる方法で階段の1番上まで昇ることができますか?

条件:1 <= n <= 45

半年前に提出したコード

 var climbStairs = function(n) {
    if(n===0){
        return 1;
    }
    if(n===1){
        return 1;
    }
    let first = 1;
    let second = 2;
    let all_ways;
    
    for(let i=3; i<=n; i++){
       all_ways = first + second;
       first = second;
       second = all_ways;
    }
    return second;
  };

今ならどう書き換えるか
1、変数名
2、条件を意識する
3、自分よりうまく書いている人のコードを真似する

1、変数名
first, secondよりもoneStep,twoStepのほうが他の人が見た際にわかりやすい
all_waysはalwaysに空目しそうなので、allPathなどに変更する

2、条件を意識する
条件に1 <= n <= 45とあるので、n === 0の場合分けがいらない。

3、自分よりうまく書いている人のコードを真似する

leetcodeは自分の解答がacceptされると、他の人の解答を見ることができます。

以下が、個人的に綺麗なコードだと思ったものを真似して書き換えたものです。

var climbStairs = function (n) {
let allPath = [0,1,2]
for (let i = 3; i < n; i++){
allPath[i] = allPath[i-1]+ allPath[i-2];
}
return allPath[n]:
};

このコードのすごい点
・シンプルでわかりやすい
・配列の特徴を活かしている
・1 <= n <= 45という条件を念頭にしっかり置いているのが感じられる
・高校生の頃に数学の綺麗な別解を見た気分になった

leetcodeの提出コードを見直してみて思うこと
1、一度解けていても、月日が経っているため忘れている
2、変数名の付け方などの視認性を上げたいと思った
3、もしコーディングテストなどで同様の問題が出てきた場合、解けるようにしたい
4、leetcodeたのしい🥳🥳

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?