Optimal Algorithmic Approach
2D DP optimized to 1D by iterating weights in reverse.
Core Invariants & Edge Cases
- dp[i][w] = max value using first i items with capacity w
- For each item: include (value[i] + dp[i-1][w-weight[i]]) or exclude (dp[i-1][w])
- 1D DP traversing weights backwards avoids reusing the same item