2110. 股票平滑下跌阶段的数目
当数组中的数字满足这个prices[i] + 1 == prices[i - 1]条件之后,就是平滑下降的阶段,也就是将数组中连续的数字进行一个分组。每次计算一个分组即可。
class Solution {
public:long long getDescentPeriods(vector<int>& p) {int n = p.size();long long ans = 0;// start// 模板 l、r分别表示左右指针int l=0,r=0;while(r<n){// 每一次求新区间则重新赋值ll=r;// r表示最长连续区间最后一个while(r < n-1 && p[r + 1] == p[r] - 1)r++;// 求完区间后收集结果int len = r - l + 1;ans += (long long)(1 + len) * len / 2;// 并移动r到下一个r++;}// endreturn ans;}
};
// start -> end部分可以当作一个分组循环的模板。