自学内容网 自学内容网

【LeetCode】每日一题 2024_9_29 买票需要的时间(模拟)

前言

每天和你一起刷 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 买票需要的时间(模拟)】

每天进步一点点

可以和我刷一辈子的每日一题吗?
一题一题,积累起来就是一辈子。


原文地址:https://blog.csdn.net/Locky136/article/details/142629499

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!