https://leetcode.com/problems/final-prices-with-a-special-discount-in-a-shop/ | Easy |
---|
В магазине действует специальная скидка: если вы покупаете товар с ценой prices[i]
, вы получаете скидку, равную prices[j]
, где j
— минимальный индекс, такой что j > i
и prices[j] <= prices[i]
. Если такого индекса нет, скидка не применяется. Необходимо вернуть массив цен после применения скидок.
class Solution {
fun finalPrices(prices: IntArray): IntArray {
val stack = ArrayDeque<Int>()
val result = prices.copyOf()
for (i in prices.indices) {
while (stack.isNotEmpty() && prices[stack.last()] >= prices[i]) {
val idx = stack.removeLast()
result[idx] -= prices[i]
}
stack.addLast(i)
}
return result
}
}