Foundations

What is DSA?

Data structures and algorithms are the tools that determine whether your code runs in milliseconds or minutes. This page builds the mental models you need before touching a single data structure.

Foundations Β· Array Β· Linked List Β· Stack Β· Queue Β· HashMap Β· Binary Tree Β· BST Β· Heap Β· Trie Β· Graph Β· Sorting Β· Binary Search Β· Two Pointers Β· Sliding Window Β· Dynamic Prog.
01
Section One Β· Foundation

What Is DSA?

DATA Data Structure organises Algorithm processes RESULT

A data structure is a way of organising data in memory so that specific operations are fast β€” the choice of structure determines which operations are cheap and which are expensive. An algorithm is a step-by-step procedure for solving a problem β€” it works on data structures the way a recipe works on ingredients. Every program uses both, whether the developer thinks about them explicitly or not β€” a HashMap lookup is a hash function algorithm operating on a hash table data structure. The goal of studying DSA is not to memorise implementations but to develop the judgment to choose the right tool for each situation.

The two questions DSA answers are: how should this data be organised, and what is the most efficient procedure to operate on it? A poor answer to either question can make a program that is correct but unusable β€” a social network that takes four seconds to load a friend list because it scans every user on every request. A good answer makes the same program feel instant β€” a graph traversal finds the shortest path between any two users in milliseconds.

Data Structure

How data is organised

The container. Determines which operations are O(1) versus O(n). The same data in a different structure can make an impossible problem tractable.

  • Array β€” contiguous, O(1) index access
  • HashMap β€” key hashing, O(1) average lookup
  • Graph β€” adjacency list, models relationships
Algorithm

How data is processed

The procedure. A sequence of steps that solves a problem by operating on a data structure. Efficiency is measured in time and space relative to input size.

  • Binary Search β€” O(log n) search on sorted array
  • Dijkstra β€” shortest path on a weighted graph
  • Merge Sort β€” O(n log n) sort via divide and conquer
02
Section Two Β· Motivation

Why It Matters

Every developer writes code that works. DSA is what separates code that works from code that scales. The difference is measurable in milliseconds, server costs, and user experience β€” and it compounds at scale.

Cost of Algorithm Choice β€” processing 1,000,000 records
Processing 1,000,000 records β€” algorithm choice matters Nested loop O(nΒ²) ~277 hours Merge sort ~0.02 seconds Same data. Same result. Different algorithm.
Wrong data structure
β–Ά
Correct code that cannot scale β€” O(n) lookup instead of O(1)
Wrong algorithm
β–Ά
Hours of compute become milliseconds β€” or vice versa
Strong DSA foundation
β–Ά
You see the trade-off before writing the code, not after
DSA is not about memorising implementations:
  • You will never write a red-black tree from scratch in production.
  • What you will do is choose between HashMap and TreeMap, between ArrayList and LinkedList, between BFS and DFS β€” and the right choice depends on understanding the structure beneath the Java class name.
═══════════════════════════════════════════════════════════════════════ -->
03
Section Three Β· Thinking

The Right Mental Model

Most developers learn DSA by memorising β€” push/pop for stack, enqueue/dequeue for queue, left-right-root for inorder traversal. Memorisation breaks under pressure and produces answers that cannot be adapted to novel problems. The goal here is to understand the WHY behind each structure so that the operations follow naturally from the mental model.

Think in Trade-offs

Every structure gives and takes

Arrays give O(1) access and take O(n) insertion. LinkedLists give O(1) insertion and take O(n) access. HashMaps give O(1) lookup and take ordering. There is no free lunch β€” the question is which cost you can afford.

Think in Shapes

Data has natural structure

A to-do list is linear β€” an array or linked list. A folder hierarchy is a tree. A social network is a graph. When you see the shape of your data, the right structure is usually obvious.

Think in Operations

What do you do most?

Identify the dominant operation β€” read, write, search, or delete. The structure that makes that operation O(1) or O(log n) is usually the right choice, even if other operations suffer. Optimise for what happens most.

The three-question framework β€” apply before writing any code
What is the shape of my data? What operation happens most? Which structure makes that O(1)? Pick the structure The three-question framework β€” apply before writing any code
Common Mistake: Reaching for ArrayList by default for every collection, then discovering the performance problem later. Before writing new Collection<T>(), ask the three questions β€” shape, dominant operation, O(1) candidate. The right structure chosen upfront costs nothing; the wrong one refactored out at scale costs days.
═══════════════════════════════════════════════════════════════════════ -->
04
Section Four Β· Complexity

Big O β€” First Look

Big O notation describes how an algorithm’s resource usage grows relative to its input size β€” not the exact time in milliseconds, but the growth rate as n gets large. It answers the question: if I double the input, what happens to the runtime? That answer determines whether code that works at 1,000 records still works at 1,000,000.

Growth Rates β€” how algorithms scale with input size
n (input size) operations 0 target zone β€” aim for these avoid at scale O(1) O(log n) O(n) O(n log n) O(nΒ²)
Notation Name What doubles n does Java example
O(1) Constant Nothing β€” same speed always HashMap.get()
O(log n) Logarithmic +1 step Binary search
O(n) Linear 2Γ— slower ArrayList.contains()
O(n log n) Linearithmic ~2Γ— slower (slightly more) Collections.sort()
O(nΒ²) Quadratic 4Γ— slower Nested loop search
This is the first look.:
  • The full Big O guide covers how to derive complexity from code, best vs worst vs average case, space complexity, and the amortized analysis behind ArrayList β€” everything you need to analyse any algorithm from scratch.


  • β†’ Read the full Big O deep-dive β†’
═══════════════════════════════════════════════════════════════════════ -->
05
Section Five Β· Guide

How To Use This Guide

Each topic page follows the same structure β€” concept, mental model, operations with pseudocode, a minimal Java implementation to build once, and the Java built-in class you will actually use in production and interviews. The consistent structure means you always know where to find what you need. Read linearly the first time; use individual sections as reference after that.

First Time Through

Read in sequence

Foundations β†’ Linear structures β†’ Trees β†’ Hashing β†’ Graphs β†’ Algorithms. Each topic builds on the previous. Jumping ahead works, but the learning path order is deliberate β€” Array before LinkedList, LinkedList before Stack, Stack before Graph traversal.

Interview Prep

Use the pattern tags

Every practice problem is tagged by pattern β€” two-pointer, monotonic stack, BFS, sliding window. If you have an interview next week, sort by pattern rather than topic. A monotonic stack solves problems across arrays, trees, and graphs.

On The Job

Jump to Section 05

If you know the concept but need the Java API β€” jump straight to “Use It In Java” on any topic page. The java-card has the methods you will actually call, the gotcha that trips people up, and the one-line decision on when to prefer an alternative.

Section Depth Guide
Section Purpose Skip if…
01 Concept Build the mental model You already know the structure
02 Mental Model Understand why it behaves this way Never β€” read this always
03 Operations Learn the mechanics You only need the Java API
04 Build It Solidify understanding You are on a deadline
05 In Java The API you will actually use Never β€” this is the payoff
06 When To Use Pick the right structure You already know the trade-offs
07 Practice Apply to interview problems You are not interview prepping
═══════════════════════════════════════════════════════════════════════ -->
06
Section Six Β· Roadmap

Your Learning Path

The 16 topics in this guide are sequenced so that each one builds on the previous β€” not arbitrarily, but because the data structures genuinely depend on each other conceptually. Array is the foundation of ArrayList, Stack, and the internal structure of HashMap; Graph traversal requires understanding Queue and Stack first.

Full Learning Path β€” 16 topics across 4 categories
LINEAR NON-LINEAR ALGORITHMS CAPSTONE Foundations Array Linked List Stack Queue HashMap Binary Tree BST Heap Trie Graph Sorting Binary Search Two Pointers Sliding Window Dynamic Programming Each topic builds on the ones before it β€” follow the arrows for the intended sequence

Linear: Arrays, linked lists, stacks, and queues all store elements in a sequential order. They differ in which operations are O(1) β€” arrays favour access, linked lists favour insertion, stacks and queues enforce access patterns.

Non-Linear: Trees and hash structures organise data hierarchically or by key. Binary trees power sorted data and priority queues; HashMaps power constant-time lookup that underpins most interview solutions.

Algorithms: Sorting, searching, and the core patterns β€” two-pointer, sliding window β€” that recur across dozens of interview problems. These are not separate from data structures; they are the procedures that operate on them.

Capstone: Dynamic programming sits alone because it requires fluency with recursion, arrays, and hashmaps before it makes sense. It is the most frequently tested hard category in senior-level interviews.

Start here, then move to Array.:
  • This page gave you the mental framework β€” what DSA is, why it matters, and how to think about trade-offs.
  • The Array page is next: the most widely used structure, and the foundation everything else builds on.


  • β†’ Start with Array β†’