说在前面
🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。
题目描述
请你写一个函数 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,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『
前端也能这么有趣
』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。