DP。DP的每一位表示的是以此位数字为结尾的光滑下降序列。则,如果prices[i] + 1 == prices[i-1]。那么无论有多少光滑下降序列以prices[i-1]结尾,都有这样的数量再加上1(也就是prices[i]自己)结尾于prices[i].
class Solution:
def getDescentPeriods(self, prices: List[int]) -> int:
base = len(prices)
if base == 1:return 1
dp = [1 for _ in range(base)]
for i in range(1, base):
if prices[i] + 1 == prices[i-1]:
dp[i] += dp[i-1]
return sum(dp)