股票平滑下跌阶段的数目

给你一个整数数组 prices ,表示一支股票的历史每日股价,其中 prices[i] 是这支股票第 i 天的价格。

一个 平滑下降的阶段 定义为:对于 连续一天或者多天 ,每日股价都比 前一日股价恰好少 1 ,这个阶段第一天的股价没有限制。

请你返回 平滑下降阶段 的数目。

示例1

输入:prices = [3,2,1,4]
输出:7
解释:总共有 7 个平滑下降阶段:
[3], [2], [1], [4], [3,2], [2,1] 和 [3,2,1]
注意,仅一天按照定义也是平滑下降阶段。

示例2

输入:prices = [8,6,7,7]
输出:4
解释:总共有 4 个连续平滑下降阶段:[8], [6], [7] 和 [7]
由于 8 - 6 ≠ 1 ,所以 [8,6] 不是平滑下降阶段。

示例3

输入:prices = [1]
输出:1
解释:总共有 1 个平滑下降阶段:[1]

提示

  • 1 <= prices.length <= 105
  • 1 <= prices[i] <= 105

思路

days保存下降阶段的持续天数,则到第i天的下降阶段为res+days

源码

function getDescentPeriods(prices: number[]): number {
    //days保存下降阶段的持续天数,则到第i天的下降阶段为res+days
    let res=1,days=1;
    const len=prices.length;
    for(let i=1;i<len;i++){
        if(prices[i-1]-prices[i]==1)days++;
        else days=1;
        res+=days;
    }
    return res;
};

结果

image-20220111183419360