Number of Smooth Descent Periods of a Stock LeetCode solution in Python
1import sys234class Solution:5def getDescentPeriods(self, prices: List[int]) -> int:6def calculate(k, ans):7if k > 1:8ans += ((k - 1) * (k)) // 29# Sum of Natural Numbers10return ans11else:12return ans1314end = 015start = 016prev = sys.maxsize17k = 018ans = 019while end < len(prices):20if prev - prices[end] == 1 or prev == sys.maxsize:21k += 122prev = prices[end]23end += 124else:25ans = calculate(k, ans)26start = end27if end < len(prices):28prev = sys.maxsize29k = 030if k > 1:31ans = calculate(k, ans)3233return ans + len(prices)