2665. 计数器 II

发布时间:2024年01月21日

说在前面

🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。

题目描述

请你写一个函数 createCounter。这个函数接收一个初始的整数值 init。并返回一个包含三个函数的对象。

这三个函数是:

  • increment() 将当前值加 1 并返回。
  • decrement() 将当前值减 1 并返回。
  • reset() 将当前值设置为 init 并返回。

示例 1:

输入:init = 5, calls = ["increment","reset","decrement"]
输出:[6,5,4]
解释:
const counter = createCounter(5);
counter.increment(); // 6
counter.reset(); // 5
counter.decrement(); // 4

示例 2:

输入:init = 0, calls = ["increment","increment","decrement","reset","reset"]
输出:[1,2,1,0,0]
解释:
const counter = createCounter(0);
counter.increment(); // 1
counter.increment(); // 2
counter.decrement(); // 1
counter.reset(); // 0
counter.reset(); // 0

提示:

  • -1000 <= init <= 1000
  • 0 <= calls.length <= 1000
  • calls[i] 是 “increment”、“decrement” 和 “reset” 中的一个

解题思路

通过调用 createCounter(5) 创建了一个计数器对象,并将其赋值给 counter 变量。然后,分别调用 increment、reset 和 decrement 方法,检查计数器的值的变化。

具体来说,调用 counter.increment() 会将计数器的值加1,并返回新的值;调用 counter.reset() 会将计数器的值重置为初始值,并返回重置后的值;调用 counter.decrement() 会将计数器的值减1,并返回新的值。

在上述示例中,调用 counter.increment() 后,计数器的值从5变为6;然后调用 counter.reset(),计数器的值重置为5;最后调用 counter.decrement(),计数器的值减1,变为4。

AC代码

/**
 * @param {integer} init
 * @return { increment: Function, decrement: Function, reset: Function }
 */
class Counter {
  constructor(init) {
    this.init = init;
    this.num = init;
  }
  reset() {
    this.num = this.init;
    return this.num;
  }
  increment() {
    this.num++;
    return this.num;
  }
  decrement() {
    this.num--;
    return this.num;
  }
}
var createCounter = function (init) {
  return new Counter(init);
};

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

公众号

关注公众号『前端也能这么有趣』,获取更多有趣内容。

说在后面

🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。

文章来源:https://blog.csdn.net/Twinkle_sone/article/details/135730204
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。