TobilobaCodes – LeetCode Explorer

2665. Counter II

In this page, we will discuss LeetCode Problem 2665: Counter II. This problem asks you to implement a counter using closures and return an object with specific methods to increment, decrement, and reset the counter.

📄 Problem Statement

Write a function createCounter that accepts an initial integer init. It should return an object with the following three functions:

💡 Example

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

🧠 Explanation

The function uses closures to preserve the state of the counter across method calls. By keeping a current variable inside the outer function scope, each of the returned methods can modify and access this shared state safely.

✅ My Solution


/**
 * @param {number} init
 * @return {{
 *   increment: () => number,
 *   decrement: () => number,
 *   reset: () => number
 * }}
 */
var createCounter = function(init) {
    let current = init;

    return {
        increment: () => ++current,
        decrement: () => --current,
        reset: () => (current = init)
    };
};