Optimal Algorithmic Approach
Two-pass: left-to-right pass fills prefix products, right-to-left pass multiplies in suffix products using a single running variable.
Core Invariants & Edge Cases
- Build prefix products left-to-right into the result array
- Then sweep right-to-left maintaining a running suffix product
- Combine: result[i] = prefix[i] × suffix[i]