- LeetCode 76 – Minimum Window Substring
The hardest sliding window on most lists, and the difficulty is not the window — it is knowing when it is valid without recounting. One integer does it, the counts are allowed to go negative because the sign carries the surplus, and t = "aa" is the case that separates working from nearly working.
- LeetCode 72 – Edit Distance
The two-dimensional DP problem — if you get one 2-D table fluent, make it this one. Why dp[i][j] must be defined over prefix lengths rather than indices, why the extra row and column remove every edge case, and how to work out which neighbour is the insert instead of guessing.
- MySQL – Storing Hierarchies with a Closure Table
Trees in a relational database. The adjacency list everyone starts with and the query that makes it painful, MySQL 8's recursive CTE which fixes most of that, and the closure table — one row per ancestor-descendant pair — which trades write cost and storage for subtree reads that are a single indexed lookup. When each one is the right answer, with the numbers.
- LeetCode 71 – Simplify Path
A stack problem disguised as string manipulation, and the stack is not an optimisation — it is the only structure that models what .. means. Splitting on / handles doubled and trailing slashes for free, popping an empty stack must be a no-op, and "..." is an ordinary filename.
- AWS – S3: Buckets, Policies and Static Sites
S3 as the service everything else leans on. Storage classes and the lifecycle rule that moves objects between them, versioning as an undo button with a bill attached, and Block Public Access — which should stay on, because a static site is served through CloudFront with OAC, not a public bucket. Ends with the bucket that serves this site: private, one policy, one distribution allowed to read it.