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

leetcode 2398.预算内的最多机器人数目

2398.预算内的最多机器人数目

题意:

在这里插入图片描述

解析:

需要注意的是,题目询问中连续是子数组的意思,即求满足条件的最长子数组的长度。

因为是连续的,所以可以用双指针扫描整个数组。每次将右指针 r r r 向右移动一个位置,然后左指针 l l l 向右移动到满足 budget 限制的位置。

判断区间 [l,r] 是否满足budget 限制。在扫描时,可以用一个变量维护区间 cost 的和,也可以通过前缀和来得到 sum(cost)。除此之外,需要这段区间 times 的最大值,维护一个非严格递减的单调队列,队首元素是这段区间 times 的最大值。

在将左指针 l l l 右移的时候,需要判断单调队列队首元素是否已经失效。

代码:

int maximumRobots(vector<int>& chargeTimes, vector<int>& runningCosts, long long budget) {
        int n = chargeTimes.size();
        deque<int> q;
        long long sum = 0;
        int ans = 0;
        for(int l = 0, r = 0; r < n; r++){
            sum += runningCosts[r];
            while(q.size() && chargeTimes[q.back()] < chargeTimes[r])
                q.pop_back();
            q.push_back(r);
            while(q.size() && chargeTimes[q.front()] + (r-l+1) * sum > budget){
                sum -= runningCosts[l++];
                if(q.front() < l)
                    q.pop_front();                 
            }
            ans = max(ans, r-l+1);
        }
        return ans;
    }

http://www.kler.cn/news/307692.html

相关文章:

  • 【机器学习】11——矩阵求导
  • 神经网络通俗理解学习笔记(5) 自然语言处理
  • Git bash使用
  • 解决RabbitMQ设置TTL过期后不进入死信队列
  • Java之线程篇四
  • 蓝桥杯—STM32G431RBT6(LCD的液晶显示,由原理及实践,配置及lcd函数)
  • 超高速传输 -- Fixed Grid与Flexible Grid
  • 除了C# 、C++,C++ cli 、还有一个Java版的 db
  • Python中的“Try...Except...Finally”:掌握异常处理的艺术
  • Linux - 探秘/proc/sys/net/ipv4/ip_local_port_range
  • 电基础理解
  • 5.基础漏洞——文件上传漏洞
  • 【论文阅读】RVT: Robotic View Transformer for 3D Object Manipulation
  • 47.面向对象综合训练-汽车
  • 【激活函数】Activation Function——在卷积神经网络中的激活函数是一个什么样的角色??
  • 从Prompt到创造:解锁AI的无限潜能
  • 解决Linux服务器上下载pytorch速度过慢的问题
  • 如何通过OceanBase的多级弹性扩缩容能力应对业务洪峰
  • 独孤思维:主动辞职的人,又杀回来了
  • Chrome远程桌面安卓版怎么使用?
  • leetcode - 分治思想
  • HAL库学习梳理——时钟树
  • 07 vue3之组件及生命周期
  • Linux: fs:支持最大的文件大小 limit file;truncate
  • 在 PyCharm 中配置 Anaconda 环境
  • HJ11 数字颠倒
  • 深度剖析去中心化存储:IPFS、Arweave 和 BNB Greenfield 的技术革新与生态系统演进
  • SEGGERS实时系统embOS推出Linux端模拟器
  • 腾讯百度阿里华为常见算法面试题TOP100(3):链表、栈、特殊技巧
  • Double Write