前言
每天和你一起刷 LeetCode 每日一题~
LeetCode 启动!
昨天的每日一题是线段树二分,题目难度远超我的能力范围,所以更不出来了
题目:买票需要的时间
代码与解题思路
func timeRequiredToBuy(tickets []int, k int) (sum int) {
ans := tickets[k]
for i, v := range tickets {
if i <= k {
sum += min(ans, v)
} else {
sum += min(ans-1, v)
}
}
return sum
}
今天的题目比较简单,读完样例不难想出,k 位置的票其实就是一个基准值,其他所有比他小的值都会全部用完,而比他大的值,只会用 k 位置值的大小
因为每轮只能买一张票
所以我最开始的代码直接用的 sum += min(ans, v)
等提交了发现,排队排在 k 位置后面的人会少买一张票,因为当 k 位置的票买完之后,后续的人就不在我们的考虑范围了,所以在 k 位置后面的情况 -1 即可:sum += min(ans-1, v)
视频实况
【【LeetCode】每日一题 2024_9_29 买票需要的时间(模拟)】
每天进步一点点
可以和我刷一辈子的每日一题吗?
一题一题,积累起来就是一辈子。