Get better at competitive programming, one problem at a time.

Solve algorithm problems in JavaScript, run them against hidden tests right in your browser, and earn a balloon for every problem you crack.

No sign-up. Your progress is saved in this browser.

8Practice problems
10Topics covered
3Difficulty levels
FreeNo account needed

How it works

Practice follows the same loop as a real contest, without the setup.

  1. Pick a problem

    Choose by difficulty or topic. Each problem comes with a clear statement and worked examples.

  2. Write your solution

    Code in the built-in editor. Your work is saved automatically, so you can leave and come back.

  3. Run the tests

    Your function runs against sample and hidden tests, including large inputs. Pass them all and the balloon is yours.

Built for deliberate practice

Everything you need to build speed and accuracy, nothing that gets in the way.

Hidden tests with large inputs

Correct but slow solutions fail with a time limit exceeded, just like on a real judge. You learn to think about complexity.

Runs entirely in your browser

Your code is executed in a background worker on your own machine. Nothing is uploaded and there is no server to wait on.

Clear feedback on failures

When a sample test fails you see the input, the expected output and what your code returned. Hidden failures point you to edge cases.

Progress that persists

Solved problems and your latest code are stored in this browser, so there is nothing to sign in to or sync.

Balanced difficulty

Problems move from prefix sums and stacks up to dynamic programming, BFS and Dijkstra with a heap.

Easy to extend

Add a problem by writing a statement, a reference solution and a list of inputs. Expected outputs are generated for you.

The problem set

Open any problem to start. Dashed balloons are waiting to be earned.

Open practice area

Recommended tool

Competitive Companion

Get the extension

Questions

Do I need an account?

No. There is nothing to sign up for. Your solved problems and saved code live in your browser's local storage.

Which language can I use?

JavaScript. You write a single function, such as twoSum(nums, target), and the runner calls it with each test input.

How are solutions judged?

The returned value is compared with the expected output for every test. If your code runs longer than four seconds on the full set, the run ends with a time limit exceeded.

Will I lose my progress?

Progress is stored per browser and device. Clearing site data, or switching browsers, starts you fresh.

Can I add my own problems?

Yes. Open js/problems.js and add an entry with a title, statement, starter code, reference solution and test inputs.

Ready for your first balloon?

Start with Two Sum and work your way up.