Solve it once. Keep it solved.
Solved it last month, blanked on it today? Take down LeetCode one problem at a time, and make every one stick.
- None yet
Solved it last month, blanked on it today? Take down LeetCode one problem at a time, and make every one stick.
Nothing to copy or log. Submit on leetcode.com as you always do, and AnkLeet shows up beside the editor at the moment it is useful.
How hard was it to solve? Your rating sets the next review.
A hint asks a question about your code; the solution explains the whole approach.
dp[11] if the best way to make 11 uses the same coin three times?n, so you only need n + 1 buckets. One pass fills them, one pass reads them from the top until you have k items. Nothing is compared, so there's no log factor.class Solution: def groupAnagrams(self, strs): groups = defaultdict(list) for s in strs: key = [0] * 26 for ch in s: key[ord(ch) - ord('a')] += 1 groups[tuple(key)].append(s) return list(groups.values())
Every accepted submission opens a four-button rating. Each button shows the gap it will schedule, so you pick the next review, not an abstract grade.
1 of 5
The count leads, with the action beside it. The same number sits on the toolbar badge.
Days in a row, the share of reviews you rated Good or Easy, and how many you've done.
Submissions per day. Click a day and the list below shows what you tried.
3reviews due today
1 overdue since Tuesday
The Reviews tab lists due cards with rating bars. Settings holds the AI key and your data.
Each problem with its result and how many tries it took, linked back to LeetCode.
No account. History, schedule and chats live in IndexedDB and export as one JSON file.
Flashcard apps reschedule in minutes because a card takes seconds. A LeetCode problem takes twenty minutes, so AnkLeet starts at a day and grows from there.
A model, not measured data: memory fades exponentially, and each review makes it fade more slowly by the card's ease factor (2.6).
Days until the next review, rated Good each time
These gaps come from AnkLeet's scheduler. Four reviews cover more than six months.
AnkLeet isn't on the Chrome Web Store yet. It's plain JavaScript with no build step, so you clone it and load the folder.
Open the repositorygit clone https://github.com/sumiyuan/ankleet.git
Cloning into 'ankleet'...
ankleet/
├── manifest.json
├── background.js
├── content-*.js
├── popup.html / .js / .css
├── fonts/
└── icons/
Open the extensions page, switch on Developer mode at the top right, click Load unpacked and choose the ankleet folder.
chrome://extensions
Automatically track every LeetCode submission
Click the AnkLeet icon, open Settings and paste a key from openrouter.ai/keys. Without one, everything except hints and chat still works.
It never leaves this browser except to call OpenRouter.
Submit anything on leetcode.com/problems. When it passes, this is waiting for you.
class Solution: def maxProfit(self, prices): lowest, best = prices[0], 0 for p in prices[1:]: best = max(best, p - lowest) lowest = min(lowest, p) return best # Accepted · Runtime 52 ms · Beats 91.4%
How hard was it to solve? Your rating sets the next review.
git pull in the folder and press reload on chrome://extensions.