One minute
Leetcode 2144
2144. Minimum Cost of Buying Candies With Discount
We have to get the items with a maximum discount to get the minimum cost we have to pay.
For example if we have:
input: cost = [3, 7, 1, 5, 9, 11, 15]
We know that the maximum discount we can get is 9
because we can buy two candies with costs 11
and 15
.
Now let us sort cost
in non-increasing order. Using this, we can get the maximum discounts we can get throughout:
cost = [15, 11, 9, 7, 5, 3, 1]
We can start with the first elements 15, 11, 9
. We can buy candies 15
and 11
, and get a discount of 9
.
Then we have elements 7, 5, 3
. We can buy elements 7
, and 5
to get a discount of 3
.
Then we have to buy 1
.
So basically, if we sort nums
in non-increasing order and then if an element is the third element, we know it is the discount element.
func minimumCost(cost []int) int {
sort.Slice(cost, func(i, j int) bool { return cost[i] > cost[j] })
res := 0
for i := 0; i < len(cost); i++ {
if (i + 1) % 3 == 0 {
continue
}
res += cost[i]
}
return res
}