Number of smooth descent periods of a stock

August 27, 2022

dynamic-programming

Problem URL: Number of smooth descent periods of a stock

We will start by result and count to be equals to 1. Then in each iteration of the array from index 1 to the rest, we check with the previous element, if the previous number is exactly bigger by 1, then we add it to our count, and add the count to our result. If the difference is more than 1, then we reset the count to 1 and add it to the result. Finally, we return the result after the iteration is over.

class Solution:
    def getDescentPeriods(self, prices: List[int]) -> int:
        result = 1
        count = 1
        for i in range(1, len(prices)):
            if prices[i] == prices[i-1]-1:
                count += 1
            else:
                count = 1
            result += count
        return result

Time Complexity: O(n)
Space Complexity: O(1)