# Grokking-the-Coding-Interview-Patterns ###### tags: `interview` `algorithm` [toc] ## Sliding Window - Maximum Sum Subarray of Size K (easy) * Smallest Subarray with a given sum (easy) * Longest Substring with K Distinct Characters (medium) * Fruits into Baskets (medium) * No-repeat Substring (hard) * * Longest Substring with Same Letters after Replacement (hard) * Longest Subarray with Ones after Replacement (hard) * * Problem Challenge 1 - Permutation in a String (hard) * * Problem Challenge 2 - String Anagrams (hard) * Problem Challenge 3 - Smallest Window containing Substring (hard) * * Problem Challenge 4 - Words Concatenation (hard) ## Two Pointers - Pair with Target Sum (easy) * Remove Duplicates (easy) * Squaring a Sorted Array (easy) * Triplet Sum to Zero (medium) * Triplet Sum Close to Target (medium) * Triplets with Smaller Sum (medium) * Subarrays with Product Less than a Target (medium) * * Problem Challenge 1 - Quadruple Sum to Target (medium) * * Problem Challenge 2 - Comparing Strings containing Backspaces (medium) * Problem Challenge 3 - Minimum Window Sort (medium) * ## Fast & Slow pointers * LinkedList Cycle (easy) * Middle of the LinkedList (easy) * Start of LinkedList Cycle (medium) * * Happy Number (medium) * * Problem Challenge 1 - Palindrome LinkedList (medium) * * Problem Challenge 2 - Rearrange a LinkedList (medium) * Problem Challenge 3 - Cycle in a Circular Array (hard) * ## Merge Intervals * Merge Intervals (medium) * Insert Interval (medium) * * Intervals Intersection (medium) * Conflicting Appointments (medium) * Problem Challenge 1 - Minimum Meeting Rooms (hard) * * Problem Challenge 2 - Maximum CPU Load (hard) * Problem Challenge 3 - Employee Free Time (hard) * ## Cyclic Sort * Cyclic Sort (easy) * Find the Missing Number (easy) * Find all Missing Numbers (easy) * Find the Duplicate Number (easy) * Find all Duplicate Numbers (easy) * Problem Challenge 1 - Find the Corrupt Pair (easy) * Problem Challenge 2 - Find the Smallest Missing Positive Number (medium) * Problem Challenge 3 - Find the First K Missing Positive Numbers (hard) * ## In-place Reversal of a LinkedList * Reverse a LinkedList (easy) * Reverse a Sub-list (medium) * Reverse every K-element Sub-list (medium) * * Problem Challenge 1 - Reverse alternating K-element Sub-list (medium) * Problem Challenge 2 - Rotate a LinkedList (medium) ## Tree Breadth First Search * Binary Tree Level Order Traversal (easy) * Reverse Level Order Traversal (easy) * * Zigzag Traversal (medium) * Level Averages in a Binary Tree (easy) * Minimum Depth of a Binary Tree (easy) * Level Order Successor (easy) * Connect Level Order Siblings (medium) * Problem Challenge 1 - Connect All Level Order Siblings (medium) * Problem Challenge 2 - Right View of a Binary Tree (easy) ## Tree Depth First Search * Binary Tree Path Sum (easy) * All Paths for a Sum (medium) * * Sum of Path Numbers (medium) * Path With Given Sequence (medium) * * Count Paths for a Sum (medium) * Problem Challenge 1 - Tree Diameter (medium) * * Problem Challenge 2 - Path with Maximum Sum (hard) * ## Two Heaps * Find the Median of a Number Stream (medium) * Sliding Window Median (hard) * * Maximize Capital (hard) * * Problem Challenge 1 - Next Interval (hard) ## Subsets * Subsets (easy) * Subsets With Duplicates (easy) * * Permutations (medium) * * String Permutations by changing case (medium) * Balanced Parentheses (hard) * * Unique Generalized Abbreviations (hard) * * Problem Challenge 1 - Evaluate Expression (hard) * * Problem Challenge 2 - Structurally Unique Binary Search Trees (hard) * * Problem Challenge 3 - Count of Structurally Unique Binary Search Trees (hard) ## Modified Binary Search * Order-agnostic Binary Search (easy) * Ceiling of a Number (medium) * * Next Letter (medium) * Number Range (medium) * * Search in a Sorted Infinite Array (medium) * * Minimum Difference Element (medium) * Bitonic Array Maximum (easy) * Problem Challenge 1 - Search Bitonic Array (medium) * Problem Challenge 2 - Search in Rotated Array (medium) * * Problem Challenge 3 - Rotation Count (medium) * ## Bitwise XOR * Single Number (easy) * Two Single Numbers (medium) * * Complement of Base 10 Number (medium) * Problem Challenge 1 ## Top 'K' Elements * Top 'K' Numbers (easy) * Kth Smallest Number (easy) * 'K' Closest Points to the Origin (easy) * Connect Ropes (easy) * * Top 'K' Frequent Numbers (medium) * Frequency Sort (medium) * * Kth Largest Number in a Stream (medium) * 'K' Closest Numbers (medium) * Maximum Distinct Elements (medium) * Sum of Elements (medium) * Rearrange String (hard) * Problem Challenge 1 - Rearrange String K Distance Apart (hard) * Problem Challenge 2 - Scheduling Tasks (hard) * * Problem Challenge 3 - Frequency Stack (hard) ## K-way merge * Merge K Sorted Lists (medium) * * Kth Smallest Number in M Sorted Lists (Medium) * Kth Smallest Number in a Sorted Matrix (Hard) * * Smallest Number Range (Hard) * * Problem Challenge 1 - K Pairs with Largest Sums (Hard) ## 0/1 Knapsack (Dynamic Programming) * 0/1 Knapsack (medium) * Equal Subset Sum Partition (medium) * * Subset Sum (medium) * Minimum Subset Sum Difference (hard) * * Problem Challenge 1 - Count of Subset Sum (hard) * Problem Challenge 2 - Target Sum (hard) ## Topological Sort (Graph) * Topological Sort (medium) * * Tasks Scheduling (medium) * Tasks Scheduling Order (medium) * All Tasks Scheduling Orders (hard) * * Alien Dictionary (hard) * Problem Challenge 1 - Reconstructing a Sequence (hard) * * Problem Challenge 2 - Minimum Height Trees (hard) * ## Miscellaneous - Kth Smallest Number (hard) * ## 參考資料 - [Grokking the Coding Interview Patterns for Coding Questions](https://github.com/Chanda-Abdul/Grokking-the-Coding-Interview-Patterns)