Sliding window keeps a moving range [l..r] and updates it in one pass. You expand `r` and move `l` to maintain a condition (e.g., sum <= X, at most K distinct). Many problems become O(n) instead of O(n^2) because each pointer moves forward at most n times.
Expanding on the short answer — what usually matters in practice:
A tiny example (an explanation template):
// Example: discuss trade-offs for "sliding-window:-what-is-it-and-when-is-it-better"
function explain() {
// Start from the core idea:
// Sliding window keeps a moving range [l..r] and updates it in one pass. You expand `r` and
}