Skip to main content

135.js

/** ------------------------------------------------------------------------------
*
* 135. Candy
* Topics: Array, Greedy
* https://leetcode.com/problems/candy/description/?envType=daily-question&envId=2025-06-02
*
------------------------------------------------------------------------------ */
function candy(ratings) {
const n = ratings.length
let totalCandies = n
let index = 1

while (index < n) {
while (ratings[index] === ratings[index - 1]) {
index++
}

let currentPeak = 0
while (index < n && ratings[index] > ratings[index - 1]) {
currentPeak++
totalCandies += currentPeak
index++
}

let currentValley = 0
while (index < n && ratings[index] < ratings[index - 1]) {
currentValley++
totalCandies += currentValley
index++
}

totalCandies -= Math.min(currentPeak, currentValley)
}

return totalCandies
}

console.log(candy([1, 0, 2]))