leecode算法1-1124 表现良好的最长时间段(JAVA)

力扣5983——同时运行 N 台电脑的最长时间(二分答案,贪心) 思路1、二分答案 答案存在上下界,在限界内二分; 下界定为0,上界按数据量定为1e15; 对于选中的mid值,按这个使用长度给电脑们使用,如果不够n台电脑用,说明mid取大了,r = mid;否则说明mid取小了,l = mid + 1; 难点在于对于选中的使用时长mid,怎么制定使用规则,也就是怎么写check函数; 对于时长高于mid的电池,在整个mid时间中只能给一台电脑供电,其有效时长为mid,对于小于mid的电池,因为可以混合使用,其能发挥全部作用,有效时长为全部; 累加mid条件下的所有有... 阅读详情

1、题目

给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。
我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。
所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。
请你返回「表现良好时间段」的最大长度。
示例 1:
输入:hours = [9,9,6,0,6,6,9]
输出:3
解释:最长的表现良好时间段是 [9,9,6]。
提示:
1 <= hours.length <= 10000
0 <= hours[i] <= 16

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-well-performing-interval
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2、错误算法

class Solution {
    public int longestWPI(int[] hours) {
        int tired = 0;
            int nottired = 0;
            int goodPerformance = 0;
            int preGoodPerformance = 0;
        for(int i = 0;i<hours.length;i++){
            
            if(hours[i]>8){
                tired++;
            }else {
                nottired++;
            }
            if(nottired >= tired){
                tired = 0;
                nottired = 0;
                if(goodPerformance>preGoodPerformance){
                    preGoodPerformance = goodPerformance;
                }
                goodPerformance = 0;
            }
            goodPerformance++;
        }
        return preGoodPerformance;
    }
}

3、暴力破解算法(网上大神提供)

算法讲解
用一个 cur 变量记录前缀和,当大于8时,cur++, 小于8时,cur–。由于从前向后遍历,当 cur > 0时,说明从开始到现在满足条件,时间必然是最长的,直接更新 res = i + 1。当 cur <= 0时呢?关键来了这里用一个 字典记录所有 cur <= 0的最小下标,所谓最小,就是后面如果再碰到了同样的 cur,不需要更新,如果没有碰到过,则把这个下标记录下来。然后用 cur - 1 去字典里找,如果找到了下标j,那么就说明从0到 j 的前缀和是 cur-1,而从0到 i 的前缀和是 cur,那么显然从 j 到 i的和是(cur - (cur - 1)) = 1 > 0,也就是说从 j+1到 i 的表现肯定是满足的,并且由于 j 是 cur-1中最小的,所以 i-j 是最大的。
此时再跟 res 比较看是否需要更新。
上面为什么只需要查找 cur-1?因为满足条件的前缀和只能是小于等于cur-1的,也就是说其实也可以查找 cur-2,cur-3…,但是,cur-2的下标一定不可能在 cur-1的下标左边。使用反证法,前提是cur-1代表的是最小下标,那么如果 cur-2在 cur-1左边,而cur-2的左边一定还会有 cur-1出现(cur值是从0开始的),这就和最小下标的前提矛盾了。
那么问题又来了,如果 cur-1不存在,是否要查找 cur-2,cur-3…呢?
也不需要,思路跟上面是一样的,如果 cur-1不存在,cur-2,cur-3…一定也不存在。举个例子,不可能从0跳到-2,-3,而中间没有-1。
通过上面有理有据的分析,下面的代码就很简单了。

代码

class Solution {
    public int longestWPI(int[] hours) {
        int cur = 0;
        int res = 0;
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < hours.length; i++) {
            if (hours[i] > 8) {
                cur++;
            } else {
                cur--;
            }
            if (cur > 0) {
                res = i + 1;
            } else {
                if (!map.containsKey(cur)) {
                    map.put(cur, i);
                }
                if (map.containsKey(cur - 1)) {
                    res = Math.max(res, i - map.get(cur - 1));
                }
            }
        }
        return res;
    }
}

作者:li-zi-he
链接:https://leetcode-cn.com/problems/longest-well-performing-interval/solution/bie-gen-lao-fu-ti-shi-yao-dan-diao-zhan-by-li-zi-h/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Matlab App Designer自学笔记(六):坐标轴控件axis函数绘图方法 作用: 绘制函数显示 显示图像(jpg png tiff) 颜色选项: r(红色) g(绿色) b(蓝色) w(白色) k(黑色) 其他 一、坐标区控件及设置 可以对坐标去进行设计: 二、功能实现及编程 功能:点击“绘图按钮”,能显示曲线。 实现:对按钮设置回调函数 若要多个图像显示在一个坐标系中,需要语句:hold(app.UIAxes,"on"); app.UIAxes是这个坐标轴的名字。 function ButtonP... 阅读详情

相关推荐

MATLABGUI读取文件并将路径显示在文本框中

MATLABGUI读取文件并将路径显示在文本框中

m0_50305149的博客 2650

LeetCode刷题笔记 1124. 表现良好的最长时间段

题目描述 给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。 请你返回「表现良好时间段」的最大长度。 示例: 输入:hours = [9,9,6,0,6,6,9] 输出:3 解释:最长的表现良好时间段是 ...

XIIV13的博客 1071

大模型运维实战:从GPU选型到推理服务稳定落地

大模型服务进入生产环境后,运维对象从传统进程转向GPU显存、KV Cache、推理吞吐等动态资源。显存利用率、首token延迟、并发队列深度等指标,直接影响模型服务的质量与成本。理解推理框架的内存分配机制、掌握监控告警与自动化扩容手段,是保障服务稳定的关键。这类能力广泛应用于企业私有化部署、智能客服、知识库问答等场景,帮助运维团队从被动救火转向主动容量规划与性能调优。本文围绕大模型运维的完整路线,梳理从硬件选型、推理部署到监控排障的实战经验,并算清一份真实项目的长期成本账。

weixin_29054245的博客 238

LeetCode第1124题 - 表现良好的最长时间段

LeetCode第1124题 - 表现良好的最长时间段

流水账 769

AI原生应用在UGC内容审核中的实战经验

AI原生应用(AI-Native Application)——以机器学习模型为核心驱动力,深度整合数据、算法、工程架构的完整系统——为破解这一三角难题提供了全新范式。全链路数据驱动:从数据采集、模型训练到决策优化,形成闭环自治系统,无需人工规则干预多模态深度理解:同时处理文本、图像、音频、视频等多类型内容,理解语义而非简单匹配特征自适应进化能力:通过人机协同反馈持续学习新型违规模式,模型周级迭代成为常态审核效率提升300%:单条视频审核耗时从2.3秒降至0.7秒。

AI算力网络与通信的博客 1149

2025年(第十一届)全国大学生统计建模大赛论文及选题分析

基于数据驱动决策:整个研究围绕给定的洪水灾害相关数据进行深入挖掘和分析,从数据清洗、特征分析、模型建立到最终预测,每一步都以数据为基础,通过对数据的有效利用来揭示洪水灾害发生的相关规律和特征,为洪水灾害的风险评估和预测提供依据,符合数据引领未来决策的理念。实际应用导向:洪水灾害是现实中严重影响人类生命财产安全和社会经济发展的重要问题,本研究旨在实现对洪水灾害的预测,其成果可直接应用于防洪减灾工作,如洪水预警、风险评估与区划等,对实际防灾减灾工作具有重要的指导意义,体现了以数据为支撑服务实际应用的特点。

qq_52590045的博客 1万+

LeetCode 1124. 表现良好的最长时间段(单调栈/哈希)

文章目录1. 题目2. 解题2.1 单调栈2.2 哈希 1. 题目 给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。 请你返回「表现良好时间段」的最大长度(好剥削啊,一定要劳累才行)。 示例 1: 输入:hours = [9,9,6,0,6,6,9] 输出:3 解释:最长的表现良好时间段是 [9,9,6]。

Michael是个半路程序员 1671

COMSOL实战:如何用有限元法(FEM)准确仿真电磁场问题?避坑指南

本文是一份COMSOL电磁场仿真实战指南,重点讲解如何运用有限元法(FEM)准确模拟电磁场问题。文章通过矩形波导和偶极子天线两大经典案例,详细剖析了从几何建模、物理场设置、网格剖分到结果验证的全流程,并提供了处理非线性材料、求解器收敛失败等高级问题的避坑技巧,旨在帮助工程师建立可靠的仿真工作流。

weixin_29297127的博客 512

【算法】最长工作时间问题

#include #include struct worker { int startTime; int endTime; int mark; }; int main() { int n, n1 = 0, n2 = 0; int i, j; int LWT[50]={0}, LRT[50]={0}, maxLWT, maxLRT;

qiaoXiong的技术博客 1618

OneNet平台MQTT连接避坑指南:C语言Token计算实战(附完整代码)

本文详细解析了OneNet平台MQTT连接中的Token计算机制,提供了C语言实现的完整代码和实战指南。通过HMAC算法和Base64编码,开发者可以高效生成安全凭证,避免常见连接问题,适用于物联网设备开发。

weixin_29193359的博客 460

别再死记硬背了!一张图搞懂无刷电机半桥与全桥驱动的核心差异(附避坑指南)

本文深入解析无刷直流电机的半桥与全桥驱动方式的核心差异,提供直观对比与选型指南。半桥驱动结构简单、成本低,适合低要求场景;全桥驱动性能优越但复杂,适用于高精度控制。文章还包含实战避坑指南,帮助工程师优化驱动方案选择与应用。

weixin_29290947的博客 319

LeetCode 1629. 按键持续时间最长的键

文章目录1. 题目2. 解题 1. 题目 LeetCode 设计了一款新式键盘,正在测试其可用性。测试人员将会点击一系列键(总计 n 个),每次一个。 给你一个长度为 n 的字符串 keysPressed ,其中 keysPressed[i] 表示测试序列中第 i 个被按下的键。releaseTimes 是一个升序排列的列表,其中 releaseTimes[i] 表示松开第 i 个键的时间。字符串和数组的 下标都从 0 开始 。第 0 个键在时间为 0 时被按下,接下来每个键都 恰好 在前一个键松开时被按下

Michael是个半路程序员 1001

TSN新技术,让您的设备网络“更实时、更确定、更安全”

近日,工业和信息化部发布了2022年第23号公告,批准发布行业标准YD/T 4134-2022《工业互联网时间敏感网络需求及场景》。该标准是国内首个时间敏感网络(TSN)技术标准,标志着我国TSN技术标准体系建设迈出了坚实的一步,对构建工业互联网网络标准体系具有重要意义。TSN源于Time-Sensitive Networking的缩写,中文译名为时间敏感网络,因其具备的确定性和微秒级交互特性,受到了对实时性要求较高的工业控制领域的关注。TSN与工业数智化。

创龙,嵌入式一体化解决方案商 771

LeetCode 1124. 表现良好的最长时间段

给你一份工作时间表hours,上面记录着某一位员工每天的工作小时数。我们认为当员工一天中的工作小时数大于8小时的时候,那么这一天就是「所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格「不劳累的天数」。请你返回「表现良好时间段」的最大长度。3最长的表现良好时间段是 [9,9,6]。0提示 1提示 2。

m0_56090828的博客 754

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Leecode1124表现良好的最长时间段

给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。 请你返回「表现良好时间段」的最大长度。 示例 1: 输入:hours = [9,9,6,0,6,6,9] 输出:3 解释:最长的表现良好时间段是 [9,...

子冉冰清的博客 750

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

表现良好的最长时间段

问题描述 给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。 请你返回「表现良好时间段」的最大长度。 示例 1: 输入:hours = [9,9,6,0,6,6,9] 输出:3 解释:最长的表现良好时间...

ColorfulSeKaI的博客 1423

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

LeetCode_Stack_1124. Longest Well-Performing Interval 表现良好的最长时间段【栈】【中等】

一,题目描述 英文描述 中文描述 给你一份工作时间表hours,上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于8 小时的时候,那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。 请你返回「表现良好时间段」的最大长度。 示例与说明 示例 1: 输入:hours = [9,9,6,0,6,6,9] 输出:3 解释:最长的表现良好时间段是 [9,9,6]。 提示: 1 &lt...

&再见萤火虫&的博客 339

Leetcode 1124:表现良好的最长时间段

题目描述 给你一份工作时间表hours,上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于8 小时的时候,那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。 请你返回「表现良好时间段」的最大长度。 示例 1: 输入:hours = [9,9,6,0,6,6,9] 输出:3 解释:最...

weixin_35338624的博客 530

【LeetCode(中等程度)】1124. 表现良好的最长时间段

给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。 请你返回「表现良好时间段」的最大长度。 示例 1: 输入:hours = [9,9,6,0,6,6,9] 输出:3 解释:最长的表现良好时间段是 [9,9,6]。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problem

qq_33197518的博客 204

【LeetCode每日一题: 1019. 链表中的下一个更大节点 | 单调栈 】

【LeetCode每日一题: 1019. 链表中的下一个更大节点 | 单调栈 】给定一个长度为 n 的链表 head对于列表中的每个节点,查找下一个 更大节点 的值。也就是说,对于每个节点,找到它旁边的第一个节点的值,这个节点的值 严格大于 它🍎作者简介:硕风和炜,优快云-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎🍎座右铭:人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯🎯。

Coder_ljw的博客 517

计算持续时间长度

 计算持续时间长度:◆ difftime(end, start) ,精确到秒:#includes time_t start,end;    start = time(NULL);... ... ... ...end = time(NULL);double temp = difftime(end,start);printf("The  Last Time:  %f

1281

LeetCode-表现良好的最长时间段(最大宽度坡问题)

题目要求 给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。请你返回「表现良好时间段」的最大长度。 示例1: 输入:hours = [9,9,6,0,6,6,9] 输出:3 解释:最长的表现良好时间段是 [9,9,6]。 原题链接:1124. 表现良好的最长时间段 解题过程 参考: 前缀和+单调栈 Python3 参

快乐学术猿 1031

Leetcode 1124:表现良好的最长时间段(超详细的解法!!!)

给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。 请你返回「表现良好时间段」的最大长度。 示例 1: 输入:hours = [9,9,6,0,6,6,9] 输出:3 解释:最长的表现良好时间段是 [9,...

coordinate的博客 4740

leetcode解题思路分析(一百三十三)1122 - 1130 题

【代码】leetcode解题思路分析(一百三十三)1122 - 1130 题。

ty的博客 664

leetcode_1124 表现良好的最长时间段

1124. 表现良好的最长时间段 给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。 请你返回「表现良好时间段」的最大长度。 示例 1: 输入:hours = [9,9,6,0,6,6,9] 输出:3 解...

wjheha的博客 1358

LeetCode1124. 表现良好的最长时间段(HashMap + 前缀和)

LeetCode1124. 表现良好的最长时间段(HashMap + 前缀和)

向未来❀去探索 的博客 413
上一篇: left join用法
下一篇: 安装centos7记录笔记
马鱼羊
博客等级 码龄7年 426粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值