Optimal Algorithmic Approach
Two-pass greedy ensuring both neighbor constraints.
Core Invariants & Edge Cases
- Two-pass greedy: left-to-right and right-to-left
- Left pass: if rating[i] > rating[i-1], candies[i] = candies[i-1]+1
- Right pass: if rating[i] > rating[i+1], candies[i] = max(candies[i], candies[i+1]+1)