2100. 适合打劫银行的日子

exiaohu 于 2022-03-06 发布

题目链接: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]