[Easy] LeetCode JS 30 - 2665. Counter II (計數器 II)
2024年3月5日
💎 加入 E+ 成長計畫 與超過 400+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源
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);
}