2024/4/21 leetcode challenge 1day [Counter]

2024/04/21に公開

やった問題

https://leetcode.com/problems/counter/description/

私の回答


function createCounter(n: number): () => number {
    let amount = 0
    let count = 0
    
    return function() {
       if(count === 0){
        amount += n 
        count += 1
        return n
       }else{
        count += 1 
        return amount += 1
       }
    }
}

学び

closures

playgroundで試してみた

var createCounter = function(n: number) {
  let currentCount = n - 1;
   console.log('1回目',n)
   console.log('2回目',currentCount)
  return function() {
    console.log('3回目',currentCount)
    currentCount += 1;
    return currentCount;      
  };
};

const counter = createCounter(10)
console.log(counter())
console.log(counter())
console.log(counter())
  • 出力結果
    [LOG]: "1回目", 10
    [LOG]: "2回目", 9
    [LOG]: "3回目", 9
    [LOG]: 10
    [LOG]: "3回目", 10
    [LOG]: 11
    [LOG]: "3回目", 11
    [LOG]: 12

  • わかること

    • 外部関数は最初の1しか呼ばれてない。
    • 内部関数は3回呼ばれている。

知らなかった

x++;

  • インクリメント演算子はインクリメントした上で、インクリメント前の値を返す。

++x;

  • インクリメント演算子はインクリメントした上で、インクリメント後の値を返す。

Discussion