Skip to main content

📊 Algorithms & Data Structures

"An algorithm must be seen to be believed." — Donald Knuth

Mastering algorithms is about recognizing patterns, not memorizing solutions. This section organizes problems by solving patterns to build transferable problem-solving skills.


🎯 Pattern-Based Learning

Array & String Patterns

PatternKey TechniqueExample Problems
Two PointersStart/End convergenceValid Palindrome, 3Sum
Sliding WindowDynamic window sizingLongest Substring, Max Subarray
Prefix SumCumulative computationRange Sum Query, Subarray Sum

Linked List Patterns

PatternKey TechniqueExample Problems
Fast & SlowCycle detectionLinked List Cycle, Find Middle
ReversalIn-place modificationReverse List, Reverse K Group
MergeCombine sorted listsMerge Two Lists, Merge K Lists

Tree & Graph Patterns

PatternKey TechniqueExample Problems
DFSRecursion, StackPath Sum, Tree Diameter
BFSQueue, Level OrderLevel Order Traversal, Shortest Path
Union FindDisjoint setsNumber of Islands, Graph Connectivity

Dynamic Programming Patterns

PatternKey TechniqueExample Problems
1D DPSingle state arrayClimbing Stairs, House Robber
2D DPMatrix stateUnique Paths, Edit Distance
KnapsackWeight/Value optimization0/1 Knapsack, Coin Change

🏗️ Core Data Structure Implementations

Essential Structures

// HashMap Implementation Concept
public class SimpleHashMap<K, V> {
private static final int INITIAL_CAPACITY = 16;
private Node<K, V>[] buckets;

// Key insight: hash(key) % capacity -> bucket index
// Collision handling: Separate chaining (linked list)
}

Structure Complexity Reference

StructureAccessSearchInsertDelete
ArrayO(1)O(n)O(n)O(n)
LinkedListO(n)O(n)O(1)O(1)
HashMap-O(1)*O(1)*O(1)*
TreeMap-O(log n)O(log n)O(log n)
Heap-O(n)O(log n)O(log n)

*Average case, worst case O(n) for hash collisions


📝 Detailed Notes

Explore specific algorithm categories:


🧠 Problem-Solving Framework


Interview Strategy
  1. Clarify - Ask about constraints, edge cases
  2. Plan - Discuss approach before coding
  3. Execute - Write clean, modular code
  4. Verify - Walk through with examples
  5. Optimize - Discuss potential improvements