2024/4/23 leetcode challenge 3day [2665. Counter II]

2024/04/24に公開

やった問題

https://leetcode.com/problems/counter-ii

私の回答

type Counter = {
    increment: () => number,
    decrement: () => number,
    reset: () => number,
}

function createCounter(init: number): Counter {
    const original = init;
    let count = 0
    let amount = init 
     
     return {
        increment:()=>{
            count += 1 
            return amount +=1
        },
        decrement:()=>{
            count -= 1
            return amount -= 1
        },
        reset:()=>{
            count = 0
            amount = original
            return original
        }
     }
    
};

/**
 * const counter = createCounter(5)
 * counter.increment(); // 6
 * counter.reset(); // 5
 * counter.decrement(); // 4
 */

学び

  • 結局count使ってないのに残ってる
    • 不要なのは消す
  • 引数のinit自体は何回呼び出しても変更されない(当たり前)。
  • 自分ができた範囲の最適解は以下だった
type Counter = {
    increment: () => number,
    decrement: () => number,
    reset: () => number,
}

function createCounter(init: number): Counter {
    let amount = init 
     
     return {
        increment:()=>{
            return amount +=1
        },
        decrement:()=>{
            return amount -= 1
        },
        reset:()=>{
            amount = init
            return init
        }
     }
    
};

/**
 * const counter = createCounter(5)
 * counter.increment(); // 6
 * counter.reset(); // 5
 * counter.decrement(); // 4
 */

Discussion