From 2bc7b5e4afadb09983b138f598e7c794f53a0e8a Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Sat, 11 Jul 2026 23:25:17 -0400 Subject: [PATCH] docs(readme): add decision cheat sheet and mental checklist for problem solving --- README.md | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/README.md b/README.md index 63cd4c9..90b29fc 100644 --- a/README.md +++ b/README.md @@ -14,3 +14,63 @@ 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) + +1. "Did I count the frequencies?" → Yes +2. "Does the problem care about the **original order**?" + - Yes → Loop the original string/array and check freq + - No → You can sort +3. "Does it want an **index** or a **boolean**?" + - Yes → Almost never sort +4. "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 +