Interactive algorithms, data structures, ML, and system design.
Build real intuition for how O(1), O(log n), O(n), O(n log n), O(n²), and O(2ⁿ) actually diverge as input size grows — and practice recognizing which class a piece of code belongs to, the single most common warm-up question in any technical interview.
Master the most fundamental data structure - arrays and lists. Learn about random access, sequential operations, and memory layout.
A linear data structure where elements are not stored at contiguous memory locations. The elements are linked using pointers.
Understand the Last-In-First-Out (LIFO) principle. Visualize Push, Pop, and Peek operations.
Understand the First-In-First-Out (FIFO) principle. Visualize Enqueue and Dequeue operations.
Understand the power of O(log n). Visualize dividing the search space in half to find targets in sorted arrays instantly.
The simplest sorting algorithm that repeatedly steps through the list, compares adjacent elements and swaps them if they are in the wrong order. "Bubbling" the largest element to the top.
A simple comparison-based sorting algorithm. It divides the list into sorted and unsorted regions, repeatedly selecting the minimum element from the unsorted region.
A classic Divide and Conquer algorithm. It divides the input array into two halves, calls itself for the two halves, and then merges the two sorted halves.
A highly efficient Divide and Conquer algorithm. It picks an element as pivot and partitions the given array around the picked pivot.
A comparison-based sorting algorithm that uses a Binary Heap data structure. It divides its input into a sorted and an unsorted region, and iteratively shrinks the unsorted region by extracting the largest element.
A non-comparison sorting algorithm that achieves O(n+k) time by counting occurrences. Perfect when the range of values (k) is not significantly larger than n.