Type the real implementation in Java or Python, then diff your solution against the canonical one.
You get the problem statement and an editor: no autocomplete, no test runner to lean on. When you're done, the canonical implementation appears beside yours so you can compare structure, edge-case handling, and complexity. Cards are drawn with spaced repetition, so the ones you miss come back sooner and the ones you know back off. Progress is kept in your browser.