description:Write the `## Approach` section — a Mermaid flowchart that traces the submitted solution — for every docs solution page under apps/docs/content/ that lacks one, using the repo's exact placement and node conventions. Use when asked to add/implement/fill in missing approaches, draw the approach diagram for a problem page, or when `/problem-approach` is run.
(quote an edge label whenever it holds `<`, `>`, or spaces around operators).
- **Loops** are a decision: `for` → `{"more n in nums?"}`, `while` → the condition
verbatim `{"left < right?"}`. `-- no -->` goes to whatever follows the loop; the
body's last node edges back to the decision. `continue` is an edge back to the loop
decision (`D -- yes --> F` above); `break` is an edge to the node after the loop.
- **Recursion** is a statement, not an expanded subgraph: `A["left = invertTree(root.left)"]`.
The base case is the first decision after entry.
- **Classes** (design problems) use one `subgraph name["method(args)"]` per public
method, plus a `state["…"]` subgraph describing the fields, with `state --> method`
edges — see `(hash-table)/146-lru-cache.mdx`. Private helpers are named inside the
method nodes (`"_remove_node then _add_node — move it beside the tail"`), not drawn.
- **Annotate the why with an em dash** inside the node, sparingly (one clause, a few
per diagram): `"nums.sort() — duplicates become adjacent"`, `"map = {0: 1} — the
empty prefix"`. The dash explains the invariant that makes the step correct — the
one thing the code does not say.
- **Node ids**: one or two capitals, unique per diagram (`S I L Q C E R W A B`). Class
diagrams prefix per method (`G1`, `P1`).
### Syntax rules (a diagram that breaks the page is worse than none)
- Wrap **every** label in double quotes — brackets, parentheses, `<`, `>` and `|` in an
unquoted label break the parser.
- Never put `"` inside a label; use `'` for string literals (`"s == ''?"`).
- Never use `|` anywhere — not in node labels, not as `-->|text|` edge syntax; edge
labels are always `-- text -->`. Write `or` for a logical or.
- Every id an edge references must be declared with a shape the first time it appears.
- Balanced: each `subgraph` has an `end`; each fence opens ```` ```mermaid ```` and closes ```` ``` ````.
### Code that does not run
Trace it anyway — the diagram documents what was submitted — and put a `::::warning`
callout **before** the fence naming exactly why it fails (`(array)/121-best-time-to-buy-and-sell-stock.mdx`):
````md
## Approach
::::warning
The diagram traces the code below literally. That code does not run: `curr` and `ans` are never initialised, so the first `curr > left` test raises `NameError`.
::::
```mermaid
…
```
````
Do not fix the code on the page: `## Solution` mirrors `work/1`, and the fix belongs
there (then `bun run sync`).
## Do not
- Do not write prose approaches, complexity tables or alternative algorithms — the
section is one flowchart (plus the warning callout when the code is broken).