| 2 | // space O(n) where n is the length of the input array |
| 3 | |
| 4 | function minRewards(scores) { |
| 5 | const rewards = scores.map((_) => 1); |
| 6 | |
| 7 | for (let i = 1; i < scores.length; i++) { |
| 8 | if (scores[i] > scores[i - 1]) rewards[i] = rewards[i - 1] + 1; |
| 9 | } |
| 10 | |
| 11 | for (let i = scores.length - 2; i >= 0; i--) { |
| 12 | if (scores[i] > scores[i + 1]) |
| 13 | rewards[i] = Math.max(rewards[i], rewards[i + 1] + 1); |
| 14 | } |
| 15 | return rewards.reduce((a, b) => a + b); |
| 16 | } |
| 17 | const scores = [8, 4, 2, 1, 3, 6, 7, 9, 5]; |
| 18 | console.log(minRewards(scores)); |