给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。
我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。
所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。
请你返回「表现良好时间段」的最大长度。
示例 1:
输入:hours = [9,9,6,0,6,6,9]
输出:3
解释:最长的表现良好时间段是 [9,9,6]。
示例 2:
输入:hours = [6,6,6]
输出:0
提示:
1 <= hours.length <= 104
0 <= hours[i] <= 16
public int longestWPI(int[] hours) {
Map<Integer, Integer> map = new HashMap<>();
int max=0,sum=0;
for (int i = 0; i < hours.length; i++) {
sum+=hours[i]>8?1:-1;
if (sum>0){
max=Math.max(max,i+1);
}else {
max=Math.max(max,i-map.getOrDefault(sum-1,i));
}
map.putIfAbsent(sum,i);
}
return max;
}
func longestWPI(hours []int) int {
mapX:=make(map[int]int,0)
max,sum:=0,0
for i, v := range hours {
sum+=1
if v<=8 {
sum-=2
}
if sum>0{
if max<i+1 {
max=i+1
}
}else {
value,ok:=mapX[sum-1]
if ok&&i-value>max{
max=i-value
}
}
if _,ok:=mapX[sum];!ok{
mapX[sum]=i
}
}
return max
}