当前位置: 首页 > news >正文

【LeetCode】每日一题 2024_9_13 预算内的最多机器人数目(滑动窗口、单调队列)

LeetCode 启动!


每日一题的题解重新开始连载!

题目:预算内的最多机器人数目

题目链接:2398. 预算内的最多机器人数目

题目描述

代码与解题思路

func maximumRobots(chargeTimes []int, runningCosts []int, budget int64) (ans int) {l, sum, mx := 0, 0, []int{0}for r := range chargeTimes {// 求 k 个机器人中最大充电时间,单调队列维护一下for len(mx) > 0 && mx[len(mx)-1] < chargeTimes[r] {mx = mx[:len(mx)-1]}mx = append(mx, chargeTimes[r])// k 个机器人的运行时间之和,直接累加sum += runningCosts[r]for len(mx) > 0 && int64(mx[0] + (r-l+1)*sum) > budget { // 维护滑窗if chargeTimes[l] == mx[0] { // 注意是遇到单调队列中的最大值才出队列mx = mx[1:]}sum -= runningCosts[l]l++}ans = max(ans, r-l+1)}return ans
}

这道题是一道经典的滑动窗口题目,题目要求找预算内连续的最多的机器人数目,然后给了一个公式:max(chargeTimes) + k * sum(runningCosts),简洁明了,直接根据这个公式用滑窗即可

求 sum 容易,直接累加就行,怎么灵活维护一个子数组的最大值呢?这就需要用到单调队列,通过单调队列实时维护当前子数组的最大值,能够很方便的对子数组的最大值进行删改

最后记录下最多的机器人数目并返回即可

视频实况(包含往期每日一题,可能会有讲解)

视频链接:【【LeetCode】每日一题 2024_9_13 预算内的最多机器人数目(滑动窗口、单调队列)】

每天进步一点点

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


http://www.mrgr.cn/news/26328.html

相关文章:

  • 论文速递! Attention-LSTM特征融合,用于剩余使用寿命(RUL)预测
  • 会计信息化:从核算软件到智能系统
  • 力扣3014.输入单词需要的最少按键次数I
  • 【STM32】独立看门狗(IWDG)原理详解及编程实践(上)
  • Linux 防火墙:iptables (二)
  • Docker和Docker-compose
  • jQuery以及jQuery的选择器
  • NEXT.js 中间件 NextResponse.redirect 无效
  • JS - 获取剪切板内容 Clipboard API
  • 从控制系统角度理解拉普拉斯卷积定理
  • 2024.9.13 系统运维
  • Java铸基之路:运算符的深入学习!(上)
  • SQL Server 语句日期格式查找方法
  • axure循环介绍
  • 五种IO模型与非阻塞IO
  • 代码随想录Day 42|leetcode题目:188.买卖股票的最佳时机IV、309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费
  • 谷歌创始人谢尔盖·布林回归一线:承认错失先机,每天都在写代码
  • 【25保研经验帖】-更新中
  • C++笔记---继承(上)
  • Spring web mvc入门练习