题目链接:2100. 适合打劫银行的日子
分别计算每个位置前面的非递增序列长度,以及其后的非递减序列长度,然后判断即可。
from typing import List
class Solution:
def goodDaysToRobBank(self, security: List[int], time: int) -> List[int]:
if time == 0:
return list(range(len(security)))
if 2 * time + 1 > len(security):
return []
def desc(nums: List[int]) -> List[int]:
des = []
for i, n in enumerate(nums):
if not des or n > nums[i - 1]:
des.append(0)
else:
des.append(des[-1] + 1)
return des
l2rdesc, r2ldesc = desc(security), desc(security[::-1])[::-1]
return [i for i, (l2r, r2l) in enumerate(zip(l2rdesc, r2ldesc)) if l2r >= time and r2l >= time]