Explain your approach to debugging a memory leak in a production environment.
Implement a deterministic leak-detection heuristic over memory snapshots. Each snapshot maps an allocation category to its live-object count; a category is a candidate when its count never decreases and its final count exceeds its initial count by at least min_growth.
Implement detect_leak_candidates(snapshots, min_growth) and return candidate categories in lexicographic order. Missing categories count as zero.
def detect_leak_candidates(snapshots, min_growth):