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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP