5129. 表现良好的最长时间段(数组)
Posted zhangzs000
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5129. 表现良好的最长时间段(数组)相关的知识,希望对你有一定的参考价值。
给你一份工作时间表 hours
,上面记录着某一位员工每天的工作小时数。
我们认为当员工一天中的工作小时数大于 8
小时的时候,那么这一天就是「劳累的一天」。
所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格 大于「不劳累的天数」。
请你返回「表现良好时间段」的最大长度。
示例 1:
输入:hours = [9,9,6,0,6,6,9] 输出:3 解释:最长的表现良好时间段是 [9,9,6]。
提示:
1 <= hours.length <= 10000
0 <= hours[i] <= 16
题目链接:
https://leetcode-cn.com/contest/weekly-contest-145/problems/longest-well-performing-interval/
/** * @param number[] hours * @return number */ var longestWPI = function(hours) let arr = []; for (var i = 0; i < hours.length; i++) for (var j = i+1; j <= hours.length; j++) let lao=0, xiu=0, subArr = hours.slice(i, j); subArr.forEach(s=> if(s>8) lao++ else xiu++ ) if(lao>xiu) pushArr(arr, subArr); if(!arr.length) return 0; let maxLenArr = arr[0]; for (var i = 1; i < arr.length; i++) if(arr[i].length>maxLenArr.length) maxLenArr = arr[i] return maxLenArr.length; ; let pushArr =function(arr, subArr) arr.push( subArr: subArr, length: subArr.length );
/** * @param number[] hours * @return number */ var longestWPI = function(hours) let n = hours.length; let array = new Array(n); for(let i = 0; i < n; i++) if(hours[i] > 8) array[i] = 1; else array[i] = -1; let ans = 0; for(let i = 0; i < n; i++) let temp = 0; for(let j = i; j < n; j++) temp += array[j]; if(temp > 0) ans = Math.max(ans, j-i+1); return ans; ;
个人理解:
像这种求最值,多层循环又会出现内存溢出的问题。
总是会出现额外的数组,还有Math.max之类的。
以上是关于5129. 表现良好的最长时间段(数组)的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode] 1124. Longest Well-Performing Interval 表现良好的最长时间段