[Easy] LeetCode JS 30 - 2665. Counter II (计数器 II)
2024年3月5日
💎 加入 E+ 成長計畫 與超過 500+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源
LeetCode 30 Days of JavaScript
本题来自 LeetCode 的 30 天 JacaScript 挑战
2665. Counter II (计数器 II)题目描述
想像你正在开发一个需要追踪各种指标的功能。我们需要在程式码中,用弹性的方式管理计数器。你的任务是设计一个名为 createCounter
的函式,可用于生成具有特定起始值的客制化计数器。
createCounter
将返回一个具有以下方法的物件:
get()
:返回计数器的当前值。increment()
:将计数器值增加 1 并返回更新后的值。decrement()
:将计数器值减少 1 并返回更新后的值。reset()
:将计数器重置回其初始值。
const counter = createCounter(4);
counter.get(); // 4
counter.increment(); // 5
counter.increment(); // 6
counter.get(); // 6
counter.reset(); // 4
counter.decrement(); // 3
本题解答
以下是本题的解答,详细解题思路可以在 E+ 成长计划看到。如果想练习更多题目,推荐可以到 GreatFrontEnd 上练习
解法一
function createCounter(initialValue = 0) {
let value = initialValue;
function get() {
return value;
}
function increment() {
value += 1;
return value;
}
function decrement() {
value -= 1;
return value;
}
function reset() {
value = initialValue;
return value;
}
return {
get,
increment,
decrement,
reset,
};
}
解法二
class Counter {
constructor(initialValue = 0) {
this.initialValue = initialValue;
this.value = initialValue;
}
get() {
return this.value;
}
increment() {
this.value += 1;
return this.value;
}
decrement() {
this.value -= 1;
return this.value;
}
reset() {
this.value = this.initialValue;
return this.value;
}
}
function makeCounter(initialValue = 0) {
return new Counter(initialValue);
}