mirror of
https://github.com/prdlk/leetcode.git
synced 2026-08-02 17:31:40 +00:00
2.7 KiB
2.7 KiB
Overview
Relevant problems for myself
- 🎨 Guides
- ⚡ Solutions
- ♿ Patterns
The Golden Rule (Memorize This)
Only sort if the problem asks for ORDER or RANKING.
If the problem asks for:
- "first"
- "index"
- "position"
- "does it exist"
- "true/false"
- "count how many"
→ DO NOT SORT. Just use the frequency map and loop.
Decision Cheat Sheet
| What the problem wants | Do you need to sort? | What to do instead | Example Problem |
|---|---|---|---|
| Sort characters by how often they appear | YES | Freq + Sort | LC 451 |
| Top K most frequent | YES | Freq + Sort + slice | LC 347 |
| Sort array by frequency | YES | Freq + Sort | LC 1636 |
| First unique character (index) | NO | Freq + loop original string | LC 387 |
| Is it an anagram? | NO | Freq + check counts | LC 242 |
| How many numbers smaller than current | Kind of | Freq + prefix count | LC 1365 |
| Most frequent element | NO | Freq + find max | LC 169 |
Mental Checklist (Say this out loud every time)
- "Did I count the frequencies?" → Yes
- "Does the problem care about the original order?"
- Yes → Loop the original string/array and check freq
- No → You can sort
- "Does it want an index or a boolean?"
- Yes → Almost never sort
- "Does it want the elements re-ordered?"
- Yes → Sort by frequency
Super Short Version to Tattoo in Your Brain
"If it wants the first / index / true-false → loop original.
If it wants sorted / top k / reordered → sort."
Practice Trigger Words
- "first non-repeating" → Loop original
- "return its index" → Loop original
- "sort by frequency" → Sort
- "top k frequent" → Sort + slice
- "valid anagram" → Just check counts