Use sparse formats (CSR/COO) when most entries are zero. They store only non‑zero values and their positions, which saves memory and can speed up operations like matrix‑vector multiply. The trade‑off is slower random access and more complex updates.
Advanced answer
Deep dive
Expanding on the short answer — what usually matters in practice:
Context (tags): sparse-matrix, csr, coo, memory
Complexity: compare typical operations (average vs worst-case).
Invariants: what must always hold for correctness.
When the choice is wrong: production symptoms (latency, GC, cache misses).
Explain the "why", not just the "what" (intuition + consequences).
Trade-offs: what you gain/lose (time, memory, complexity, risk).
Edge cases: empty inputs, large inputs, invalid inputs, concurrency.
Examples
A tiny example (an explanation template):
// Example: discuss trade-offs for "sparse-matrix-representation:-when-would-you-use"
function explain() {
// Start from the core idea:
// Use sparse formats (CSR/COO) when most entries are zero. They store only non‑zero values a
}
Common pitfalls
Too generic: no concrete trade-offs or examples.
Mixing average-case and worst-case (e.g., complexity).