/* * @LastEditTime: 2025-12-15 18:52:23 */ typedeflonglong ll; classSolution { public: ll getDescentPeriods(vector<int>& prices){ ll ans = 0, cnt = 0; int last = 0; for (int t : prices) { if (t != last - 1) { ans += cnt * (cnt + 1) / 2; // printf("t = %d, cnt = %lld\n", t, cnt); cnt = 0; } last = t; cnt++; } return ans + cnt * (cnt + 1) / 2; } };
Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
''' LastEditTime: 2025-12-15 18:54:39 ''' from typing importList
classSolution: defgetDescentPeriods(self, prices: List[int]) -> int: ans = last = cnt = 0 for p in prices: if p != last - 1: ans += cnt * (cnt + 1) // 2 cnt = 0 cnt += 1 last = p return ans + cnt * (cnt + 1) // 2
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
/* * @LastEditTime: 2025-12-15 21:37:22 */ classSolution { publiclonggetDescentPeriods(int[] prices) { longans=0, cnt = 0; for (intlast=0, i = 0; i <= prices.length; i++) { if (i == prices.length || prices[i] != last - 1) { ans += cnt * (cnt + 1) / 2; cnt = 0; } cnt++; if (i < prices.length) { last = prices[i]; } } return ans; } }
/* * @LastEditTime: 2025-12-15 21:35:08 */ package main
funcgetDescentPeriods(prices []int) (ans int64) { var cnt int64 last := 0 for i := 0; i <= len(prices); i++ { if i == len(prices) || prices[i] != last - 1 { ans += cnt * (cnt + 1) / 2 cnt = 0 } cnt++ if i < len(prices) { last = prices[i] } } return }