Python 中最长的良好性能区间


假设我们有一个 hours 列表,这是一个给定员工每天工作的小时数列表。这里,当且仅当工作的小时数(严格)大于 8 时,一天被认为是辛苦的一天。一个良好的性能区间是指工作日区间,其中辛苦天数严格大于非辛苦天数。我们需要找到最长良好性能区间的长度。因此,如果输入类似于 [9,9,6,0,6,6,9],则输出将为 3。这是因为最长的良好性能区间是 [9,9,6]

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

  • 设置 temp := 0 和 ans := 0,创建一个映射 d,以及 corner := 0
  • 对于 i 从 0 到 hours 数组的大小 - 1
    • 如果 hours[i] > 8,则 temp := temp + 1,否则 temp := -1
    • 如果 hours[i] > 8,则 corner = 1
    • 如果 temp > 0,则 ans := ans 和 i + 1 的最大值
    • 如果 temp 不在映射 d 中,则 d[temp] := i
    • 如果 temp – 1 在映射 d 中,则 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

更新于: 2020年4月30日

192 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.