Learning Roadmap

13 topics · 0/0 questions solved · click any card to study

Fundamentals

01

Arrays

An array is a contiguous block of memory storing elements of the same type. It is the most fundamental data structure and the backbone of many algorithms. Random access in O(1) makes arrays ideal for index-based lookups, but insertions and deletions in the middle are costly.

Fundamentals
0/0
02

Strings

Strings are sequences of characters — effectively arrays of chars. Most languages treat them as immutable, which means every concatenation creates a new allocation. Mastering string manipulation requires understanding character encoding, frequency counting, and pattern matching.

Fundamentals
0/0
03

Hash Map

A hash map (dictionary) maps keys to values using a hash function to compute an index into a backing array. It provides average-case O(1) for insert, delete, and lookup — making it the most versatile tool for trading space for speed. Hash sets offer the same performance for membership testing.

Fundamentals
0/0
04

Sliding Window

Sliding window is a technique for reducing a nested loop over subarrays/substrings to a single O(n) pass. You maintain a window defined by two pointers (left, right) and expand or shrink it based on a constraint. It is the go-to pattern whenever the problem asks for a contiguous subarray or substring satisfying some condition.

Fundamentals
0/0
05

Stack

A stack is a Last-In-First-Out (LIFO) data structure. Elements are pushed onto the top and popped from the top. Stacks are essential for problems involving nested structures, backtracking, and maintaining a running context — such as matching brackets, evaluating expressions, and tracking the next greater element.

Fundamentals
0/0
06

Queue

A queue is a First-In-First-Out (FIFO) data structure. Elements are enqueued at the rear and dequeued from the front. Queues are indispensable for Breadth-First Search (BFS), level-order tree traversal, and any problem where processing order must follow arrival order.

Fundamentals
0/0
07

Linked List

A linked list is a sequence of nodes where each node holds a value and a pointer to the next node. Unlike arrays, nodes are scattered in memory, so random access is O(n). However, insertion and deletion at a known position are O(1) — no shifting needed. Two-pointer (fast/slow) techniques solve many linked-list problems elegantly.

Fundamentals
0/0

Graphs & Trees

Advanced