2620. 计数器
2620. 计数器
题目
Given an integer n
, return a counter
function. This counter
function initially returns n
and then returns 1 more than the previous value every subsequent time it is called (n
, n + 1
, n + 2
, etc).
Example 1:
Input:
n = 10
["call","call","call"]
Output: [10,11,12]
Explanation: counter() = 10 // The first time counter() is called, it returns n.
counter() = 11 // Returns 1 more than the previous time.
counter() = 12 // Returns 1 more than the previous time.
Example 2:
Input:
n = -2
["call","call","call","call","call"]
Output: [-2,-1,0,1,2]
Explanation: counter() initially returns -2. Then increases after each sebsequent call.
Constraints:
-1000 <= n <= 1000
0 <= calls.length <= 1000
calls[i] === "call"
题目大意
给定一个整型参数 n
,请你编写并返回一个 counter
函数。这个 counter
函数最初返回 n
,每次调用它时会返回前一个值加 1 的值 ( n
, n + 1
, n + 2
,等等)。
示例 1:
输入:
n = 10
["call","call","call"]
输出:[10,11,12]
解释:
counter() = 10 // 第一次调用 counter(),返回 n。
counter() = 11 // 返回上次调用的值加 1。
counter() = 12 // 返回上次调用的值加 1。
示例 2:
输入:
n = -2
["call","call","call","call","call"]
输出:[-2,-1,0,1,2]
解释: counter() 最初返回 -2。然后在每个后续调用后增加 1。
提示:
-1000 <= n <= 1000
0 <= calls.length <= 1000
calls[i] === "call"
解题思路
这是闭包的一个典型应用。我们需要用闭包来保存 n
的当前值,每次调用递增后返回最新值。
- 创建一个函数
createCounter
,这个函数接受一个参数n
,即从哪个数字开始计数。 - 返回一个函数,该函数每次调用时递增并返回当前计数值。
这道题旨在帮助理解闭包的基本概念,在闭包中,内部函数可以访问外部函数的变量并保存其状态。
复杂度分析
- 时间复杂度:
O(1)
,每次调用时仅进行一次数值操作。 - 空间复杂度:
O(1)
,只需要存储变量n
。
代码
/**
* @param {number} n
* @return {Function} counter
*/
var createCounter = function (n) {
return function () {
return n++;
};
};
/**
* const counter = createCounter(10)
* counter() // 10
* counter() // 11
* counter() // 12
*/
相关题目
题号 | 标题 | 题解 | 标签 | 难度 |
---|---|---|---|---|
2623 | 记忆函数 | [✓] | ||
2629 | 复合函数 | [✓] | ||
2665 | 计数器 II | [✓] |