[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);
}
🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們