题目简介:
给你一份工作时间表 hours
,上面记录着某一位员工每天的工作小时数。
我们认为当员工一天中的工作小时数大于 8
小时的时候,那么这一天就是「劳累的一天」。
所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。
请你返回「表现良好时间段」的最大长度。
示例 1:
1 | 输入:hours = [9,9,6,0,6,6,9] |
示例 2:
1 | 输入:hours = [6,6,6] |
提示:
1 <= hours.length <= 10^4
0 <= hours[i] <= 16
思路:
我们可以把大于8小时当做1
,其余为-1
。
当遍历到i
时,若score > 0
,则说明[0, i]
符合要求,则res = max(res, i + 1)
。
否则,我们需要找到第一次出现score - 1
时的下标j
,则[j + 1, i]
的score == 1 > 0
,因此res = max(res, i - count[score - 1])
。 注意到我们此时利用哈希表来存储第一次出现score
时的位置。
代码如下:
1 | class Solution { |