header

follow badge

## 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) 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