A collection of LeetCode Hard difficulty problems solved with step-by-step explanations, pattern categorization, and optimized source code.
| # | Problem | Pattern | Language | Time | Space |
|---|---|---|---|---|---|
| 4 | Median of Two Sorted Arrays | Binary Search | Python | O(n) | O(1) |
| 10 | Regular Expression Matching | Dynamic Programming | JavaScript | O(n) | O(n) |
| 23 | Merge k Sorted Lists | Two Pointers | Python | O(n) | O(1) |
| 25 | Reverse Nodes in k-Group | Two Pointers | Python | O(n) | O(1) |
| 30 | Substring with Concatenation of All Words | Sliding Window | Python | O(n) | O(1) |
| 32 | Longest Valid Parentheses | Stack & Queue | Python | O(n) | O(n) |
| 37 | Sudoku Solver | Array / General | Python | O(n) | O(1) |
| 41 | First Missing Positive | Array / General | Python | O(n) | O(1) |
| 42 | Trapping Rain Water | Array / General | Python | O(n) | O(1) |
| 44 | Wildcard Matching | Array / General | Python | O(n) | O(1) |
| 51 | N-Queens | Tree & Graph | Python | O(n) | O(n) |
| 52 | N-Queens II | Array / General | Python | O(n) | O(1) |
| 60 | Permutation Sequence | Backtracking | Python | O(n) | O(1) |
| 65 | Valid Number | Array / General | Python | O(n) | O(1) |
| 68 | Text Justification | Heap | Python | O(n) | O(n) |
| 76 | Minimum Window Substring | Sliding Window | PHP | O(n) | O(1) |
| 84 | Largest Rectangle in Histogram | Monotonic Stack | TypeScript | O(n) | O(n) |
| 85 | Maximal Rectangle | Math & Logic | Python | O(n) | O(1) |
| 87 | Scramble String | Array / General | JavaScript | O(n) | O(1) |
| 115 | Distinct Subsequences | Dynamic Programming | JavaScript | O(n) | O(n) |
| 123 | Best Time to Buy and Sell Stock III | Array / General | JavaScript | O(n) | O(1) |
| 124 | Binary Tree Maximum Path Sum | Tree & Graph | JavaScript | O(n) | O(n) |
| 126 | Word Ladder II | Hash Map | Python | O(n) | O(n) |
| 127 | Word Ladder | Hash Map | JavaScript | O(n) | O(n) |
| 135 | Candy | Array / General | JavaScript | O(n) | O(1) |
| 140 | Word Break II | Hash Map | Python | O(n) | O(n) |
| 149 | Max Points on a Line | Array / General | Python | O(n) | O(1) |
| 154 | Find Minimum in Rotated Sorted Array II | Binary Search | C++ | O(n) | O(1) |
| 185 | Department Top Three Salaries | Database / SQL | SQL | O(n) | O(n) |
| 188 | Best Time to Buy and Sell Stock IV | Array / General | JavaScript | O(n) | O(1) |
| 212 | Word Search II | Binary Search | JavaScript | O(n) | O(1) |
| 214 | Shortest Palindrome | Two Pointers | Python | O(n) | O(1) |
| 218 | The Skyline Problem | Dynamic Programming | JavaScript | O(n) | O(n) |
| 220 | Contains Duplicate III | Array / General | Python | O(n) | O(1) |
| 224 | Basic Calculator | Bit Manipulation | JavaScript | O(n) | O(1) |
| 233 | Number of Digit One | Math & Logic | Python | O(n) | O(1) |
| 239 | Sliding Window Maximum | Sliding Window | Python | O(n) | O(1) |
| 262 | Trips and Users | Database / SQL | SQL | O(n) | O(n) |
| 273 | Integer to English Words | Array / General | Python | O(n) | O(1) |
| 282 | Expression Add Operators | Array / General | Python | O(n) | O(1) |
| 295 | Find Median from Data Stream | Array / General | JavaScript | O(n) | O(1) |
| 297 | Serialize and Deserialize Binary Tree | Binary Search | Python | O(n) | O(1) |
| 301 | Remove Invalid Parentheses | Stack & Queue | Python | O(n) | O(n) |
| 312 | Burst Balloons | Array / General | Python | O(n) | O(1) |
| 315 | Count of Smaller Numbers After Self | Array / General | JavaScript | O(n) | O(1) |
| 321 | Create Maximum Number | Array / General | Python | O(n) | O(1) |
| 327 | Count of Range Sum | Bit Manipulation | JavaScript | O(n) | O(1) |
| 329 | Longest Increasing Path in a Matrix | Tree & Graph | Python | O(n) | O(n) |
| 330 | Patching Array | Array / General | Python | O(n) | O(1) |
| 332 | Reconstruct Itinerary | Array / General | Python | O(n) | O(1) |
| 335 | Self Crossing | Array / General | Python | O(n) | O(1) |
| 336 | Palindrome Pairs | Two Pointers | Python | O(n) | O(1) |
| 352 | Data Stream as Disjoint Intervals | Heap | Python | O(n) | O(n) |
| 354 | Russian Doll Envelopes | Array / General | JavaScript | O(n) | O(1) |
| 363 | Max Sum of Rectangle No Larger Than K | Math & Logic | Python | O(n) | O(1) |
| 391 | Perfect Rectangle | Math & Logic | Python | O(n) | O(1) |
| 403 | Frog Jump | Array / General | Python | O(n) | O(1) |
| 407 | Trapping Rain Water II | Array / General | Python | O(n) | O(1) |
| 410 | Split Array Largest Sum | Array / General | Python | O(n) | O(1) |
| 420 | Strong Password Checker | Array / General | Python | O(n) | O(1) |
| 432 | All O`one Data Structure | Array / General | Python | O(n) | O(1) |
| 440 | K-th Smallest in Lexicographical Order | Array / General | Python | O(n) | O(1) |
| 458 | Poor Pigs | Array / General | Python | O(n) | O(1) |
| 460 | LFU Cache | Hash Map | Python | O(n) | O(n) |
| 466 | Count The Repetitions | Tree & Graph | Python | O(n) | O(n) |
| 472 | Concatenated Words | Array / General | Python | O(n) | O(1) |
| 479 | Largest Palindrome Product | Two Pointers | Python | O(n) | O(1) |
| 480 | Sliding Window Median | Sliding Window | Python | O(n) | O(1) |
| 483 | Smallest Good Base | Array / General | Python | O(n) | O(1) |
| 493 | Reverse Pairs | Array / General | JavaScript, Python | O(n) | O(1) |
| 502 | IPO | Bit Manipulation | JavaScript | O(n) | O(1) |
| 514 | Freedom Trail | Array / General | Python | O(n) | O(1) |
| 517 | Super Washing Machines | Array / General | Python | O(n) | O(1) |
| 546 | Remove Boxes | Array / General | Python | O(n) | O(1) |
| 552 | Student Attendance Record II | Array / General | Python | O(n) | O(1) |
| 587 | Erect the Fence | Tree & Graph | Python | O(n) | O(n) |
| 591 | Tag Validator | Array / General | Python | O(n) | O(1) |
| 600 | Non-negative Integers without Consecutive Ones | Array / General | Python | O(n) | O(1) |
| 601 | Human Traffic of Stadium | Database / SQL | SQL | O(n) | O(n) |
| 629 | K Inverse Pairs Array | Array / General | Python | O(n) | O(1) |
| 630 | Course Schedule III | Array / General | Python | O(n) | O(1) |
| 632 | Smallest Range Covering Elements from K Lists | Array / General | Python | O(n) | O(1) |
| 639 | Decode Ways II | Array / General | Python | O(n) | O(1) |
| 664 | Strange Printer | Array / General | Python | O(n) | O(1) |
| 668 | Kth Smallest Number in Multiplication Table | Array / General | Python | O(n) | O(1) |
| 773 | Sliding Puzzle | Sliding Window | Python | O(n) | O(1) |
| 778 | Swim in Rising Water | Array / General | Python | O(n) | O(1) |
| 780 | Reaching Points | Array / General | Python | O(n) | O(1) |
| 810 | Chalkboard XOR Game | Bit Manipulation | Python | O(n) | O(1) |
| 818 | Race Car | Array / General | Python | O(n) | O(1) |
| 843 | Guess the Word | Array / General | Python | O(n) | O(1) |
| 850 | Rectangle Area II | Math & Logic | Python | O(n) | O(1) |
| 878 | Nth Magical Number | Array / General | Python | O(n) | O(1) |
| 882 | Reachable Nodes In Subdivided Graph | Two Pointers | Python | O(n) | O(1) |
| 913 | Cat and Mouse | Array / General | Python | O(n) | O(1) |
| 940 | Distinct Subsequences II | Dynamic Programming | JavaScript | O(n) | O(n) |
| 1036 | Escape a Large Maze | Array / General | Python | O(n) | O(1) |
| 1044 | Longest Duplicate Substring | Array / General | Python | O(n) | O(1) |
| 1096 | Brace Expansion II | Array / General | JavaScript | O(n) | O(1) |
| 1147 | Longest Chunked Palindrome Decomposition | Two Pointers | Python | O(n) | O(1) |
| 1157 | Online Majority Element In Subarray | Array / General | JavaScript | O(n) | O(1) |
| 1250 | Check If It Is a Good Array | Array / General | Python | O(n) | O(1) |
| 1301 | Number of Paths with Max Score | Dynamic Programming | PHP | O(n) | O(n) |
| 1316 | Distinct Echo Substrings | Array / General | Python | O(n) | O(1) |
| 1340 | Jump Game V | Dynamic Programming | C++ | O(n) | O(n) |
| 1345 | Jump Game IV | Hash Map | C++ | O(n) | O(n) |
| 1354 | Construct Target Array With Multiple Sums | Array / General | JavaScript | O(n) | O(1) |
| 1368 | Minimum Cost to Make at Least One Valid Path in a Grid | Tree & Graph | Python | O(n) | O(n) |
| 1392 | Longest Happy Prefix | Prefix Sum | Python | O(n) | O(n) |
| 1406 | Stone Game III | Dynamic Programming | PHP | O(n) | O(n) |
| 1483 | Kth Ancestor of a Tree Node | Binary Search | JavaScript | O(n) | O(1) |
| 1505 | Minimum Possible Integer After at Most K Adjacent Swaps On Digits | Math & Logic | JavaScript | O(n) | O(1) |
| 1510 | Stone Game IV | Dynamic Programming | TypeScript | O(n) | O(n) |
| 1520 | Maximum Number of Non-Overlapping Substrings | Heap | JavaScript | O(n) | O(n) |
| 1563 | Stone Game V | Prefix Sum | Java | O(n) | O(n) |
| 1569 | Number of Ways to Reorder Array to Get Same BST | Binary Search | Python | O(n) | O(1) |
| 1649 | Create Sorted Array through Instructions | Array / General | JavaScript | O(n) | O(1) |
| 1665 | Minimum Initial Energy to Finish Tasks | Binary Search | C++ | O(log n) | O(1) |
| 1728 | Cat and Mouse II | Array / General | Python | O(n) | O(1) |
| 1819 | Number of Different Subsequences GCDs | Dynamic Programming | Python | O(n) | O(n) |
| 1840 | Maximum Building Height | Tree & Graph | Python | O(n) | O(n) |
| 1851 | Minimum Interval to Include Each Query | Heap | Python | O(n) | O(n) |
| 1866 | Number of Ways to Rearrange Sticks With K Sticks Visible | Array / General | Python | O(n) | O(1) |
| 1872 | Stone Game VIII | Prefix Sum | Java | O(n) | O(n) |
| 1923 | Longest Common Subpath | Tree & Graph | Python | O(n) | O(n) |
| 1928 | Minimum Cost to Reach Destination in Time | Array / General | Python | O(n) | O(1) |
| 1964 | Find the Longest Valid Obstacle Course at Each Position | Array / General | JavaScript | O(n) | O(1) |
| 1998 | GCD Sort of an Array | Array / General | Python | O(n) | O(1) |
| 2045 | Second Minimum Time to Reach Destination | Tree & Graph | Python | O(n) | O(n) |
| 2179 | Count Good Triplets in an Array | Tree & Graph | JavaScript | O(n) | O(n) |
| 2183 | Count Array Pairs Divisible by K | Array / General | Python | O(n) | O(1) |
| 2193 | Minimum Number of Moves to Make Palindrome | Two Pointers | JavaScript | O(n) | O(1) |
| 2197 | Replace Non-Coprime Numbers in Array | Bit Manipulation | Python | O(n) | O(1) |
| 2213 | Longest Substring of One Repeating Character | Binary Search | Java | O(n) | O(1) |
| 2267 | Check if There Is a Valid Parentheses String Path | Stack & Queue | C++ | O(n) | O(n) |
| 2267 | Check if There Is a Valid Parentheses String Path | Stack & Queue | C++ | O(n) | O(n) |
| 2286 | Booking Concert Tickets in Groups | Array / General | JavaScript | O(n) | O(1) |
| 2290 | Minimum Obstacle Removal to Reach Corner | Array / General | Python | O(n) | O(1) |
| 2344 | Minimum Deletions to Make Array Divisible | Hash Map | Python | O(n) | O(n) |
| 2407 | Longest Increasing Subsequence II | Dynamic Programming | JavaScript | O(n) | O(n) |
| 2426 | Number of Pairs Satisfying Inequality | Array / General | JavaScript | O(n) | O(1) |
| 2472 | Maximum Number of Non-overlapping Palindrome Substrings | Two Pointers | JavaScript | O(n) | O(1) |
| 2509 | Cycle Length Queries in a Tree | Fast & Slow Pointers | JavaScript | O(n) | O(1) |
| 2543 | Check if Point Is Reachable | Array / General | Python | O(n) | O(1) |
| 2552 | Count Increasing Quadruplets | Array / General | Python | O(n) | O(1) |
| 2630 | Memoize II | Hash Map | TypeScript | O(n) | O(n) |
| 2650 | Design Cancellable Function | Array / General | TypeScript | O(n) | O(1) |
| 2659 | Make Array Empty | Hash Map | JavaScript | O(n) | O(n) |
| 2709 | Greatest Common Divisor Traversal | Array / General | Python | O(n) | O(1) |
| 2736 | Maximum Sum Queries | Tree & Graph | JavaScript | O(n) | O(n) |
| 2867 | Count Valid Paths in a Tree | Tree & Graph | JavaScript | O(n) | O(n) |
| 2897 | Apply Operations on Array to Maximize Sum of Squares | Stack & Queue | JavaScript | O(n) | O(n) |
| 2916 | Subarrays Distinct Element Sum of Squares II | Array / General | JavaScript, Python | O(n) | O(1) |
| 2926 | Maximum Balanced Subsequence Sum | Dynamic Programming | JavaScript | O(n) | O(n) |
| 2940 | Find Building Where Alice and Bob Can Meet | Array / General | JavaScript | O(n) | O(1) |
| 3008 | Find Beautiful Indices in the Given Array II | Array / General | Python | O(n) | O(1) |
| 3072 | Distribute Elements Into Two Arrays II | Array / General | JavaScript | O(n) | O(1) |
| 3093 | Longest Common Suffix Queries | Hash Map | Python | O(n) | O(n) |
| 3116 | Kth Smallest Amount With Single Denomination Combination | Backtracking | Java | O(n) | O(1) |
| 3161 | Block Placement Queries | Tree & Graph | Python | O(n) | O(n) |
| 3187 | Peaks in Array | Array / General | JavaScript | O(n) | O(1) |
| 3245 | Alternating Groups III | Array / General | JavaScript | O(n) | O(1) |
| 3283 | Maximum Number of Moves to Kill All Pawns | Array / General | Python | O(n) | O(1) |
| 3312 | Sorted GCD Pair Queries | Dynamic Programming | PHP | O(n) | O(n) |
| 3336 | Find the Number of Subsequences With Equal GCD | Dynamic Programming | PHP | O(n) | O(n) |
| 3348 | Smallest Divisible Digit Product II | Math & Logic | Python, TypeScript | O(n) | O(1) |
| 3378 | Count Connected Components in LCM Graph | Array / General | Python | O(n) | O(1) |
| 3382 | Maximum Area Rectangle With Point Constraints II | Math & Logic | JavaScript | O(n) | O(1) |
| 3414 | Maximum Score of Non-overlapping Intervals | Heap | JavaScript | O(n) | O(n) |
| 3451 | Find Invalid IP Addresses | Database / SQL | SQL | O(n) | O(n) |
| 3454 | Separate Squares II | Array / General | Python | O(n) | O(1) |
| 3482 | Analyze Organization Hierarchy | Array / General | Python | O(n) | O(1) |
| 3501 | Maximize Active Section with Trade II | Array / General | PHP | O(n) | O(1) |
| 3515 | Shortest Path in a Weighted Tree | Tree & Graph | JavaScript | O(n) | O(n) |
| 3518 | Smallest Palindromic Rearrangement II | Tree & Graph | PHP | O(n) | O(n) |
| 3525 | Find X Value of Array II | Binary Search | JavaScript | O(n) | O(1) |
| 3534 | Path Existence Queries in a Graph II | Tree & Graph | PHP | O(n) | O(n) |
| 3554 | Find Category Recommendation Pairs | Array / General | Python | O(n) | O(1) |
| 3559 | Number of Ways to Assign Edge Weights II | Tree & Graph | Python | O(n) | O(n) |
| 3614 | Process String with Special Operations II | Tree & Graph | Python | O(n) | O(n) |
| 3617 | Find Students with Study Spiral Pattern | Database / SQL | SQL | O(n) | O(n) |
| 3620 | Network Recovery Pathways | Tree & Graph | PHP | O(n) | O(n) |
| 3624 | Number of Integers With Popcount-Depth Equal to K II | Bit Manipulation | Python | O(n) | O(1) |
| 3636 | Threshold Majority Queries | Hash Map | Python | O(n) | O(n) |
| 3671 | Sum of Beautiful Subsequences | Dynamic Programming | Python | O(n) | O(n) |
| 3673 | Find Zombie Sessions | Database / SQL | SQL | O(n) | O(n) |
| 3691 | Maximum Total Subarray Value II | Array / General | Python | O(n) | O(1) |
| 3699 | Number of ZigZag Arrays I | Hash Map | PHP | O(n) | O(n) |
| 3700 | Number of ZigZag Arrays II | Tree & Graph | PHP | O(n) | O(n) |
| 3721 | Longest Balanced Subarray II | Array / General | Python | O(n) | O(1) |
| 3734 | Lexicographically Smallest Palindromic Permutation Greater Than Target | Backtracking | Java | O(n) | O(1) |
| 3739 | Count Subarrays With Majority Element II | Array / General | PHP | O(n) | O(1) |
| 3753 | Total Waviness of Numbers in Range II | Bit Manipulation | Python | O(n) | O(1) |
| 3762 | Minimum Operations to Equalize Subarrays | Array / General | Python | O(n) | O(1) |
| 3764 | Most Common Course Pairs | Database / SQL | SQL | O(n) | O(n) |
| 3826 | Minimum Partition Score | Array / General | Python | O(n) | O(1) |
| 3832 | Find Users with Persistent Behavior Patterns | Database / SQL | SQL | O(n) | O(n) |
| 3841 | Palindromic Path Queries in a Tree | Tree & Graph | Python | O(n) | O(n) |
| 3855 | Sum of K-Digit Numbers in a Range | Bit Manipulation | Python | O(n) | O(1) |
| 3864 | Minimum Cost to Partition a Binary String | Tree & Graph | Python | O(n) | O(n) |
| 3943 | Number of Pairs After Increment | Array / General | Python | O(n) | O(1) |
| 3962 | Maximum Subarray Sum After at Most K Swaps | Array / General | C++ | O(n) | O(1) |
| 4013 | Count Subarrays With Even Odd Ratio II | Two Pointers | Python | O(n) | O(1) |
| 4017 | Peaks in Array II | Array / General | Python | O(n) | O(1) |
| 4033 | Valid K-Unique Subarrays I | Hash Map | Python | O(n) | O(n) |
| 4051 | Count Subarrays with Distant Sums | Array / General | Python | O(n) | O(1) |
| 4055 | Count Shadow Pairs II | Array / General | Python | O(n) | O(1) |