Python的最长执行间隔

假设我们有工时列表,这是给定雇员每天工作时数的列表。在此情况下,当且仅当工作小时数(严格)大于8时,才被视为疲倦的一天。一个良好执行的间隔是指天数间隔,在此间隔中,疲倦的天数严格大于该天数不累人的日子。我们必须找到最长的性能间隔的长度。因此,如果输入类似于[9,9,6,0,6,6,9],那么输出将为3。这是因为最长的性能良好间隔是[9,9,6]

为了解决这个问题,我们将遵循以下步骤-

  • 设置temp:= 0和ans:= 0,绘制一张映射d,设置角点== 0

  • 对于0到小时数组大小的范围内的i – 1

    • temp:= temp + 1,如果hours [i]> 8,否则为-1

    • 如果hours [i]> 8,则转角= 1

    • 如果temp> 0,则ans:= ans和i + 1的最大值

    • 如果temp不在映射d中,则d [temp]:= i

    • 如果temp –在图d中为1,则ans:= ans和i – d [temp – 1]的最大值

让我们看下面的实现以更好地理解-

示例

class Solution(object):
   def longestWPI(self, hours):
      temp = 0
      ans = 0
      d = {}
      corner = 0
      for i in range(len(hours)):
         temp += 1 if hours[i]>8 else -1
         if hours[i]>8:
            corner = 1
         if temp>0:
            ans = max(ans,i+1)
         if temp not in d:
            d[temp]=i
         if temp-1 in d:
            ans = max(ans,i-d[temp-1])
      return max(ans,0)
ob = Solution()print(ob.longestWPI([9,9,6,0,6,6,9]))

输入值

[9,9,6,0,6,6,9]

输出结果

3