2100.适合打劫银行的日子
一、直接法(超时)
对每个数i,遍历其左右time的范围[i-time, i+time],复杂度O(n^2)
class Solution:
def goodDaysToRobBank(self, s: List[int], time: int) -> List[int]:
n = len(s)
res = []
for i in range(time, n-time):
j= k = i
flag = True
while j > i-time and k < i + time :
if s[j-1] >= s[j] and s[k+1] >= s[k]:
j -= 1
k += 1
else:
flag =False
break
if flag:
res.append(i)
return res 二、dp(前缀和思想)
第一个数组left[i]记录从security[i]开始,左边连续非递增的元素数目
第二个数组right[i]记录从security[i]开始,右边连续非递减的元素数目。只有符合leftD[i] >= time && rightD[i] >= time的security[i]才适合。
最后更新于